@Autowired 和 @Resource 都是 Spring生态中,用来进行依赖注入的注解。
它们直接有以下区别:
1.来源不同:
@Autowired 和 @Resource 来自不同的父类,其中 @Autowired 是 Spring 定义的注解,而 @Resource 是 Java 定义的注解,它来自于 JSR-250。这些注解是在 Java EE 5 规范中引入的,用于简化和标准化开发企业级应用程序的依赖注入和生命周期管理。
2.依赖查找的顺序不同:
依赖注入的功能,是通过先在 Spring IoC 容器中查找对象,再将对象注入引入到当前类中。而查找有分为两种实现:按名称(byName)查找或按类型(byType)查找,其中 @Autowired 和 @Resource 都是既使用了名称查找又使用了类型查找,但二者进行查找的顺序却截然相反。
@Autowired:
@Resource
3.依赖注入的支持不同:
@Autowired 和 @Resource 支持依赖注入的用法不同,常见依赖注入有以下 3 种实现: 1. 属性注入 2. 构造方法注入 3. Setter 注入
其中,@Autowired 支持属性注入、构造方法注入和 Setter 注入,而 @Resource 只支持属性注入和 Setter 注入。
海的那边是敌人。