在Spring框架中,@Resource
和@Autowired
都是用于依赖注入的注解,但它们有一些关键的区别,主要体现在来源、默认行为和配置方式上。
1. 来源
-
@Autowired
:- 来源:Spring框架。
@Autowired
是Spring框架提供的注解,专门用于Spring的依赖注入。
-
@Resource
:- 来源:Java标准(JSR-250)。
@Resource
是Java标准的一部分,定义在javax.annotation
包中,不依赖于特定的框架。
2. 默认行为
-
@Autowired
:- 默认按类型(byType)注入。
- 如果找到多个匹配的Bean,会抛出异常,除非使用
@Qualifier
指定具体的Bean名称。 - 可以用于字段、构造函数和Setter方法。
-
@Resource
:- 默认按名称(byName)注入。
- 如果按名称找不到匹配的Bean,会按类型(byType)注入。
- 可以用于字段和Setter方法。