@Resource @Autowired 的区别
时间: 2024-01-16 08:56:56 浏览: 91
@Resource 和 @Autowired 都是 Spring 框架中用于进行依赖注入的注解,它们之间的主要区别在于:
1. @Autowired 通过 byType 的方式进行注入,而 @Resource 通过 byName 的方式进行注入。也就是说,@Autowired 根据类型找到对应的 bean 进行注入,而 @Resource 根据名称找到对应的 bean 进行注入。
2. @Autowired 是 Spring 框架的注解,而 @Resource 是 JavaEE 的注解,也就是说,@Autowired 只能在 Spring 框架中使用,而 @Resource 可以在任何 JavaEE 容器中使用。
3. @Autowired 默认情况下要求依赖对象必须存在,如果找不到对应的 bean,会抛出 NoSuchBeanDefinitionException 异常;而 @Resource 默认情况下不要求依赖对象必须存在,如果找不到对应的 bean,则会将依赖对象设置为 null。
4. @Autowired 可以通过 @Qualifier 指定具体的 bean 名称进行注入,而 @Resource 则不能。
总的来说,@Autowired 更加常用,因为它可以根据类型进行注入,并且可以通过 @Qualifier 指定具体的 bean 名称进行注入。但是在某些情况下,@Resource 也有它的优势,比如在 JavaEE 容器中使用时。
相关问题
@Resource 和@Autowired 的区别
@Resource 和 @Autowired 都是 Java 注解,用于实现对象的自动注入。它们的主要区别在于:
1. @Resource 优先按照名称进行匹配,只有名称匹配失败后,才会按照类型进行匹配。而 @Autowired 默认按照类型进行匹配。
2. @Autowired 可以通过 required 属性指定是否必须要注入成功;而 @Resource 没有类似的属性。
3. @Resource 是 JSR-250 规范定义的注解,只能用于注入其他 Bean;而 @Autowired 是 Spring 定义的注解,除了注入 Bean,还可以用于注入一些非 Bean 类型的对象。
总的来说,@Resource 用于名称匹配的注入,@Autowired 用于类型匹配的注入。
springboot @Resource与@autowired的区别
`@Resource`和`@Autowired`都是用于依赖注入的注解,但是它们有以下区别:
1. 来源不同:`@Resource`是J2EE的注解,而`@Autowired`是Spring的注解。
2. 自动装配方式不同:`@Resource`默认按照名称注入,如果找不到与名称匹配的Bean,则尝试按照类型注入;而`@Autowired`默认按照类型注入,如果找到多个类型匹配的Bean,则尝试按照名称注入。
3. 使用场景不同:`@Resource`主要用于注入J2EE容器管理的资源,如DataSource、JMS等;而`@Autowired`主要用于注入Spring容器管理的Bean。
4. 可以注入的范围不同:`@Resource`可以注入任何Java对象,而`@Autowired`只能注入Spring容器管理的Bean。
因此,在使用时需要根据实际情况选择合适的注解。如果需要注入J2EE容器管理的资源,则使用`@Resource`;如果需要注入Spring容器管理的Bean,则使用`@Autowired`。
阅读全文