@Autowired @Resource区别
时间: 2024-06-17 13:05:20 浏览: 133
@Autowired和@Resource都是Spring框架中用来实现依赖注入的注解,它们的主要区别如下:
1. 来源不同:
@Autowired是Spring自带的注解,而@Resource是Java EE提供的注解。
2. 匹配规则不同:
@Autowired默认按照类型进行匹配注入,如果有多个同类型的Bean,可以通过@Qualifier指定名称来选择具体注入哪个Bean;而@Resource默认按照名称进行匹配注入。
3. 注入方式不同:
@Autowired可以用在构造方法、Setter方法、字段和一般方法上;而@Resource只能用在字段上。
4. Null值处理不同:
@Autowired要求被注入的对象不能为null,否则会抛出异常;而@Resource允许被注入的对象为null。
如果在使用Spring框架时需要使用依赖注入,建议根据实际需要选择合适的注解。
相关问题
@autowired与@resource区别
`@Autowired` 和 `@Resource` 都是用来在类中注入依赖的注解。主要区别在于:
- `@Autowired` 是 Spring 框架自带的注解,它可以用在字段、构造器、方法上。当使用在字段上时,默认按类型装配;当使用在构造器上时,按照参数顺序装配。
- `@Resource` 是 Java 自带的注解,它可以用在字段、方法上。当使用在字段上时,默认按照名称装配;当使用在方法上时,按照参数名称装配。
总结来说:@Autowired 是 Spring 框架的注解,它默认按类型装配;而 @Resource 是 Java 标准注解,它默认按照名称装配。
@Autowired跟@Resource 的区别
@Autowired和@Resource都是用于依赖注入的注解,它们的作用很相似,但是有一些区别。
1. @Autowired是Spring框架的注解,而@Resource是Java EE的注解,需要导入javax.annotation.Resource包。
2. @Autowired默认按照byType的方式进行依赖注入,如果找到多个类型匹配的Bean,则会按照byName的方式进行匹配,如果仍然找到多个,则会抛出异常。而@Resource默认按照byName的方式进行依赖注入,如果找不到与名称匹配的Bean,则会抛出异常。
3. @Autowired可以用在字段、构造器、Setter方法上,而@Resource只能用在字段和Setter方法上。
4. @Autowired是Spring特有的注解,不具有移植性,而@Resource是Java EE标准注解,具有移植性。
综上所述,如果项目使用Spring框架,建议使用@Autowired注解进行依赖注入;如果要保证项目的移植性,建议使用@Resource注解。
阅读全文