@Autowired和 @Resource
@Autowired
和 @Resource
都是用于依赖注入的注解,但它们来自不同的框架,并且在行为和使用方式上有一些区别。以下是它们的详细比较:
1. 来源
@Autowired
:- 来自 Spring 框架。
- 是 Spring 的核心注解之一。
@Resource
:- 来自 Java 标准库(
javax.annotation
包)。 - 是 JSR-250 规范的一部分,Spring 也支持它。
- 来自 Java 标准库(
2. 默认注入方式
@Autowired
:- 默认按 类型(byType) 注入。
- 如果有多个相同类型的 Bean,则需要结合
@Qualifier
注解指定具体的 Bean 名称。
@Resource
:- 默认按 名称(byName) 注入。
- 如果没有指定名称,则会退化为按类型注入。
3. 注入方式
@Autowired
:- 可以用于字段、构造方法、Setter 方法。
- 支持构造函数注入(推荐使用)。
@Autowired private UserService userService; @Autowired public UserController(UserService userService) <