@Autowired 和 @Resource
作用:
- @Resource和@Autowired都是做bean的注入时使用
- 在接口仅有单一实现类时,两个注解的修饰效果相同,可以互相替换,不影响使用
- 两者都可以写在字段和setter方法上。两者如果都写在字段上,那么就不需要再写setter方法。
- 最好是将@Resource放在setter方法上,因为这样更符合面向对象的思想,通过set、get去操作属性,而不是直接去操作属性。
区别
- @Resource是JDK原生的注解,@Autowired是Spring2.5 引入的注解
- @Resource有两个属性name和type。Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。
- @Autowired只根据type进行注入,不会去匹配name。如果涉及到type无法辨别注入对象时,那需要依赖@Qualifier或@Primary注解一起来修饰。
- @Autowired如果要使用byName,需要使用@Qualifier一起配合。而@Resource如果指定了name,则用byName自动装配,如果指定了type,则用byType自动装配。
未完待续…