@Resource 是如何工作的

来自姬鸿昌的知识库
跳到导航 跳到搜索

@Resource 注解与 @Autowired 类型,也是用来进行依赖注入的,

@Resource 是 Java 层面所提供的注解,@Autowired 是 Spring 所提供的注解,它依赖注入的底层实现逻辑也不同。

@Resource 注解中有一个 name 属性,针对 name 属性是否有值,@Resource 的依赖注入底层流程是不同的。

@Resource 如果 name 属性有值,那么 Spring 会直接根据指定的 name 值去 Spring 容器找 Bean 对象,如果找到了则成功;如果没有找到,则报错。

如果 @Resource 中的 name 属性没有值,则:

1、先判断该属性名字在 Spring 容器中是否存在 Bean 对象。

2、如果存在,则成功找到 Bean 对象进行注入。

3、如果不存在,则根据属性类型去 Spring 容器找 Bean 对象,找到一个则进行注入。