springboot中@autowired使用 还是Resource
时间: 2023-08-10 14:25:19 浏览: 198
在Spring Boot中,@Autowired和@Resource都可以用来注入依赖对象。但它们有以下几点不同:
1. @Autowired是Spring的注解,@Resource是JDK的注解。
2. @Autowired默认按照byType的方式进行匹配,如果存在多个同类型的Bean,则需要通过@Qualifier或者@Primary进行指定。而@Resource默认按照byName的方式进行匹配,如果找不到与依赖对象名称相同的Bean,则会抛出异常。
3. @Autowired可以注入任意类型的Bean,而@Resource只能注入Java原生类型、String、Class以及自定义类型的Bean。
总的来说,@Autowired更加灵活,而@Resource更加严格。但在实际开发中,建议根据具体情况选择合适的注解。
相关问题
springboot @Autowired与@Resource
springboot中的@Autowired和@Resource都是用来进行依赖注入的,但是它们有一些不同点:
1. @Autowired是Spring提供的注解,而@Resource是JavaEE提供的注解。
2. @Autowired默认按照类型进行注入,如果有多个同类型的bean,则可以通过@Qualifier指定具体的bean名称。而@Resource默认按照名称进行注入,如果没有指定name属性,则会使用字段名或方法名作为bean名称进行匹配。
3. @Autowired可以用在构造方法、字段、setter方法上,而@Resource只能用在字段和setter方法上。
@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项目中使用,具体使用哪个注解取决于具体的需求和场景。
阅读全文