@Autowired @Resource区别
时间: 2024-08-12 19:10:48 浏览: 46
详解Spring依赖注入:@Autowired,@Resource和@Inject区别与实现原理
@Autowired和@Resource都是Spring框架中的依赖注入(Dependency Injection, DI)注解,它们的主要目标都是帮助开发者自动地将所需的bean实例注入到其他组件中,简化了对依赖对象的管理。以下是两者之间的区别:
1. **@Autowired**:
- 它是Java Persistence API (JPA)的一部分,主要用于声明式配置,更倾向于自动扫描和装配,通常用于构造函数注入。
- 如果找不到匹配的bean,它会抛出异常,这有助于早期发现配置错误。
- Autowired默认是智能的,可以根据类型、名称或参数类型来查找bean。
2. **@Resource**:
- 原本是EJB(Enterprise JavaBeans)的概念,在Spring中引入作为@Autowired的替代选项,但现在被强烈推荐使用@Autowired。
- @Resource支持更多的配置选项,如name属性用于指定特定的bean名字,如果找不到也会抛出异常,但不是那么智能。
- 它更灵活,允许使用默认的构造函数注入,或者基于名称的注入,以及匹配byType或byName。
阅读全文