@Autowired与@Resource的区别
时间: 2024-01-30 14:54:53 浏览: 70
@Autowired和@Resource都是用来注入依赖的注解,但它们有以下几点不同:
1.来源不同:@Autowired是Spring框架的注解,而@Resource是JSR-250规范的注解,也可以在Spring框架中使用。
2.注入方式不同:@Autowired默认按照类型(byType)进行注入,如果有多个类型相同的bean,则按照属性名进行匹配。而@Resource默认按照名称(byName)进行注入,如果没有指定name属性,则按照属性名进行匹配。
3.可选性不同:@Autowired注解的required属性默认为true,即必须有一个合适的bean可以注入,否则会报错。而@Resource注解的required属性默认为false,即如果没有找到合适的bean可以注入,则将属性设置为null。
4.作用域不同:@Autowired注解可以用于字段、方法、构造函数等位置进行注入,而@Resource注解只能用于字段和setter方法上进行注入。
5.引入包不同:@Autowired注解需要引入org.springframework.beans.factory.annotation.Autowired包,而@Resource注解需要引入javax.annotation.Resource包。
相关问题
@autowired与@resource的区别是,为啥远程调用用@Resource,springboot内项目用@autowired
`@Autowired`和`@Resource`都是用于依赖注入(Dependency Injection)的注解,用于在Spring中将一个Bean注入到另一个Bean中。它们的区别如下:
1. 来源不同:
- `@Autowired`是Spring的注解,它通过类型匹配来进行依赖注入。它可以用在字段、构造函数、setter方法以及方法参数上。
- `@Resource`是Java标准的注解(javax.annotation.Resource),它通过名称匹配来进行依赖注入。它可以用在字段、setter方法以及方法参数上。
2. 命名方式不同:
- `@Autowired`不需要指定名称,它会根据类型自动匹配合适的Bean进行注入。
- `@Resource`需要指定名称,它会根据名称来查找对应的Bean进行注入。
对于为什么远程调用使用`@Resource`而Spring Boot内部项目使用`@Autowired`,这是由于两个注解的设计初衷和使用场景不同。
- `@Autowired`是Spring框架提供的注解,它更加灵活,可以根据类型进行依赖注入。在Spring Boot内部项目中,通常将所有的Bean都放在同一个应用上下文中,因此可以直接使用`@Autowired`进行依赖注入。
- `@Resource`是Java标准的注解,主要用于按名称进行依赖注入。在远程调用中,往往存在不同的应用上下文,因此可以使用`@Resource`通过指定名称来查找远程调用所需的Bean。
需要注意的是,`@Autowired`和`@Resource`都可以在Spring Boot项目中使用,具体使用哪个注解取决于具体的需求和场景。
@autowired注解和@resource注解区别
`@Autowired`和`@Resource`注解都是用于实现依赖注入的,但它们有一些区别:
1. 来源:`@Autowired`是Spring框架提供的注解,而`@Resource`是Java EE标准的注解。
2. 注入方式:`@Autowired`默认按照byType的方式进行装配,即根据类型来自动注入依赖对象。如果有多个匹配的bean,可以使用`@Qualifier`注解指定具体的bean。而`@Resource`默认按照byName的方式进行装配,即根据名称来自动注入依赖对象。如果没有指定name属性,则会根据字段或方法名进行匹配。
3. 兼容性:`@Autowired`是Spring框架特有的注解,与Spring相关的功能更加强大和灵活。而`@Resource`是Java EE标准的注解,可以在任何Java EE容器中使用。
4. 需要导入的包:`@Autowired`需要导入`org.springframework.beans.factory.annotation.Autowired`包,而`@Resource`需要导入`javax.annotation.Resource`包。
总体来说,`@Autowired`注解更加常用和灵活,适用于Spring项目;而`@Resource`注解则是Java EE标准的一部分,适用于Java EE容器。在实际使用中,可以根据需要选择合适的注解来实现依赖注入。
阅读全文