@Autowired 和 @Resource 的区别是什么?
有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准
https://blog.zysicyj.top
全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。 https://store.amazingmemo.com/chapterDetail/1685324709017001`
@Autowired
和 @Resource
的区别
@Autowired
和 @Resource
的区别当我们在Spring框架中进行依赖注入时,我们通常会使用 @Autowired
和 @Resource
这两个注解。虽然这两个注解都是用来实现依赖注入的,但它们之间还是存在一些差异。
@Autowired
@Autowired
@Autowired
是Spring框架提供的注解,它可以对类成员变量、方法以及构造函数进行标注,来完成自动装配的工作。通过 @Autowired
的使用,Spring 会在启动时进行自动扫描,并将标记了该注解的类的依赖关系自动注入。
特点:
默认按照类型进行自动装配 (
byType
)。如果需要按名称进行装配,则需要和
@Qualifier
注解一起使用。当找不到合适的Bean装配时,会抛出异常,除非将
required
属性设置为false
。
代码示例:
@Resource
@Resource
@Resource
是由JSR-250规范提供的注解。这个注解是属于JavaEE的,从JavaEE 5开始就拥有了 @Resource
注解,Spring 支持这个注解并且在其基础之上增加了额外的功能。
特点:
默认按照名称进行自动装配 (
byName
)。如果没有指定名称,它会默认使用需要注入的变量的名称作为Bean的名称来查找。
如果按名称注入失败,则会按照类型进行注入。
不需要与其他注解配合使用。
提供了
name
、type
、authenticationType
等属性。
代码示例:
总结
@Autowired
是Spring的注解,主要是按类型 (byType
) 自动装配,而@Resource
是JavaEE的注解,主要是按名称 (byName
) 自动装配。@Autowired
与@Qualifier
配合使用可以按名称进行装配,而@Resource
可以通过name
属性直接指定Bean的名称。在注入时,
@Autowired
通过设置required
属性来避免异常,而@Resource
有更多的配置属性如name
和type
。
在选择使用哪一个注解时,需要考虑你的具体需求和你使用的Spring版本,以选择最适合你项目的注解。
最后更新于