@Autowired和@Resource之间的区别
- @Autowired默认是按照类型byType装配注入的,默认情况下它要求依赖对象必须存在(可以设置它required属性为
false)。组件id的方式需要与@Qualifier(“name”)配合使用 - @Resource默认是按照名称byName来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入。
- @Autowired 和 @Resource 来自不同的“父类”,其中 @Autowired 是 Spring 定义的注解,而 @Resource 是 Java 定义的注解,它来自于 JSR-250(Java 250 规范提案)。
- @Autowired只包含一个参数:required,标明是否开启自动注入,默认是true。而@Resource包含七个参数,最重要的两个参数是:name 和 type,用来指定注入的方式。
扩展
1、两者的相同点:
- 两者都是实现Bean的注入功能
- 两者都可以写在属性字段或者setter方法上。两者如果都写在属性字段上,setter方法可以省略掉。
2、@Autowired 查找顺序
- @Autowired 是先根据类型(byType)查找,如果存在多个 Bean 再根据名称(byName)进行查找,