@Autowired 和 @Resource 的区别

70 阅读1分钟

Spring Boot 项目中常用 @Autowired@Resource 两种注解进行依赖注入。主要区分点可以分为5点分别讲述

1、来源不同

@Autowired是 Spring 的注解,而@Resource 是 JavaEE 的注解

2、查找依赖顺序不同

@Autowired 是先根据类型(byType)查找,如果存在多个 Bean 再根据名称(byName)进行查找。 @Resource 是先根据名称查找,如果(根据名称)查找不到,再根据类型进行查找 另外,两者还可以使用@Qualifier进行约束。

3、支持的参数不同

二者支持的参数以及参数的个数完全不同,其中 @Autowired 只支持设置一个 required 的参数,而 @Resource 支持 7 个参数

image.png

image.png

image.png

4、依赖注入的支持不同

@Autowired 支持属性注入、构造方法注入和 Setter 注入,而 @Resource 只支持属性注入和 Setter 注入

5、编译器提示不同

当使用 IDEA 专业版在编写依赖注入的代码时,如果注入的是 Mapper 对象,那么使用 @Autowired 编译器会提示报错信息,虽然 IDEA 会出现报错信息,但程序是可以正常执行的。将依赖注入的注解更改为 @Resource 就不会出现报错信息了。

参考: 面试突击78:@Autowired 和 @Resource 有什么区别?-腾讯云开发者社区-腾讯云 详解依赖注入的三种方法以及遇到问题的解决-CSDN博客Spring对象注入方式比较:属性、构造与Setter,-CSDN博客