【出现频率】★★★☆☆ 【学习难度】★★☆☆☆

答案:@Resource和@Autowired都可以标注在字段或属性的setter方法上,都是Spring标识为自动注入对象的注解,两者最主要区别是:@Autowired默认按byType自动注入,而@Resource默认按byName自动注入。

@Autowired(自动装配)注解是按类型装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它required属性为false。@Autowired可以结合@Qualifier注解一起使用,进行精确装配。

@Resource默认按名称自动装配,按名称找不到则会按类型自动装配。@Resourc有两个重要属性name和type。如果配置了name属性,则按指定的name名称进行装配,如果没有则抛出异常。如果配置了type属性,则按类型进行装配,找不到或发现多个Bean都会抛出异常。但如果同时配置了name和type属性,则从Spring上下文中查找唯一匹配的Bean进行装配,找不到则抛出异常。