<一> 区别
(1). 来源不同
@Autowired是spring定义的注解
@Resource是java定义的注解
(2). 依赖查找顺序不同
依赖注入的功能,都是通过先在springIOC容器中查找对象 (
@Autowired
private Test test; // test就是查找的对象
),再将对象引入到当前类中。
@Autowired与@Resource都是通过对象的类型type和名称name进行查找,但是二者查找的顺序不同。
@Autowired—先通过类型type查找,如果存在多个同类型的bean,再通过名称进行查找。
@Resource—先安装名称进行查找,如果名称不存在,再安装类型查找。
(3). 支持的参数不同
点两者的源码,可以看见@Resource支持7种参数(name,type等), @Autowired仅支持一个参数required(是否必须)
(4)两者依赖注入的支持不同
@Resource 只支持属性注入和 Setter 注入,不支持构造方法注入
@Autowired 支持属性注入、 Setter 注入、构造方法注入
(5)编译器提示不同
ideal环境下,如果使用@Autowired注入Mapper文件,会报错,
修改为@Resource即可