Spring中@Autowired和@Resource的区别

简介: Spring中@Autowired和@Resource的区别

1、来源不同:

前者是Spring提供的注解,后者是Java提供的注解

2、查找顺序不同:

前者是先通过类型查找,如果存在多个Bean再根据name查找

后者是先通过名称查找,如果找不到再根据类型查找

3、支持的参数不同

前者只有一个参数required,表示是否自动装配

后者可以设置七个参数,主要有name和type参数

4、依赖注入的用法支持不同

@Autowired 既支持构造方法注入,又支持属性注入和 Setter 注入

@Resource 只支持属性注入和 Setter 注入

5、编译器 IDEA 的提示不同

当注入 Mapper 对象时,使用 @Autowired 注解编译器会提示错误,而使用 @Resource 注解则不会提示错误

扩展:

@Autowired注解中required默认为true,表示项目启动会寻找该接口的实现类是否加@Service注解,不加报错,如果改成false,项目能正常启动

@Autowired和@Qualifier搭配使用,当存在一个接口多个实现类时,需要使用@Qualifier通过名字来指定对应的实现类

@Autowired是类型注入,可使用@Qualifier(value = “user”)使用名称注入,子类Address要加上注解@Component(value = “user”)

@Autowired注解中required默认为true

例如:

@Autowired
private UserService userService;

当注入该接口的实现类UserServiceImpl1中不加@Service注解时候,在项目启动时候会报注入的bean不存在,如下错误:

Field userService in com.xhy.demo01.controller.HelloController required a bean of type ‘com.xhy.demo01.constrotor.UserService’ that could not be found.

当改成如下代码时候,项目启动就不会报错了

@Autowired(required = false)
 private UserService userService;


目录
相关文章
|
1月前
|
监控 Java 应用服务中间件
spring和springboot的区别
spring和springboot的区别
25 1
|
1月前
|
Java 开发者 Spring
Spring Framework 中的 @Autowired 注解:概念与使用方法
【4月更文挑战第20天】在Spring Framework中,@Autowired 注解是实现依赖注入(Dependency Injection, DI)的一种非常强大的工具。通过使用 @Autowired,开发者可以减少代码中的引用绑定,提高模块间的解耦能力
133 6
|
1月前
|
XML Java 数据库连接
Spring框架与Spring Boot的区别和联系
Spring框架与Spring Boot的区别和联系
121 0
|
1月前
|
安全 Java Docker
|
1月前
|
XML Java C++
【Spring系列】Sping VS Sping Boot区别与联系
【4月更文挑战第2天】Spring系列第一课:Spring Boot 能力介绍及简单实践
45 0
【Spring系列】Sping VS Sping Boot区别与联系
|
1月前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
78 0
|
1月前
|
缓存 安全 Java
Spring Boot 面试题及答案整理,最新面试题
Spring Boot 面试题及答案整理,最新面试题
168 0
|
1月前
|
存储 JSON Java
SpringBoot集成AOP实现每个接口请求参数和返回参数并记录每个接口请求时间
SpringBoot集成AOP实现每个接口请求参数和返回参数并记录每个接口请求时间
66 2
|
1月前
|
前端开发 搜索推荐 Java
【Spring底层原理高级进阶】基于Spring Boot和Spring WebFlux的实时推荐系统的核心:响应式编程与 WebFlux 的颠覆性变革
【Spring底层原理高级进阶】基于Spring Boot和Spring WebFlux的实时推荐系统的核心:响应式编程与 WebFlux 的颠覆性变革
|
1月前
|
前端开发 Java 应用服务中间件
Springboot对MVC、tomcat扩展配置
Springboot对MVC、tomcat扩展配置