1. @Autowired 注解
来源: Spring 框架提供的注解注入方式:默认按类型注入 (byType)如果有多个相同类型的 Bean,会抛出异常可以配合 @Qualifier 指定具体的 Bean 名称
特点:
-
required属性默认为 true,找不到 Bean 会抛异常 -
可以设置
@Autowired(required = false)允许注入失败
2. @Resource 注解
来源: Java EE 标准注解 (JSR-250)
注入方式:
-
默认按名称注入 (byName)
-
如果按名称找不到,再按类型注入
-
可以通过 name 属性指定 Bean 名称
特点:
-
required属性默认为 true,找不到 Bean 会抛异常 -
可以设置
@Autowired(required = false)允许注入失败
2. @Resource 注解
来源: Java EE 标准注解 (JSR-250)
注入方式:
-
默认按名称注入 (byName)
-
如果按名称找不到,再按类型注入
-
可以通过 name 属性指定 Bean 名称
3. 主要区别对比
特性
@Autowired
@Resource
来源
Spring 框架
Java EE 标准
默认注入方式
按类型 (byType)
按名称 (byName)
多个Bean处理
需要 @Qualifier
通过 name 属性指定
required属性
支持
不支持
适用位置
字段、方法、构造器
字段、方法
4. 针对你的配置类使用建议
推荐使用 @Resource,因为:
-
明确指定了 Bean 名称,更加清晰
-
不依赖 Spring 特定注解,更符合标准
-
避免了类型冲突的问题