太棒啦!Autowired工作流程

简介: 太棒啦!Autowired工作流程
  • 默认情况注解的类名首字母小写就是bean的id

  • 首先根据所需要的组件类型到IOC容器中查找
  • 能够找到唯一的bean:直接执行装配


如果完全找不到匹配这个类型的bean:装配失败


和所需类型匹配的bean不止一个


没有@Qualifier注解:根据@Autowired标记位置成员变量的变量名作为bean的id进行匹配


能够找到:执行装配


找不到:装配失败


使用@Qualifier注解:根据@Qualifier注解中指定的名称作为bean的id进行匹配


能够找到:执行装配


找不到:装配失败

@Controller public class UserController { @Autowired @Qualifier("userServiceImpl") private UserService userService; public void saveUser(){ userService.saveUser(); } }

@Autowired中有属性required,默认值为true,因此在自动装配无法找到相应的bean时,会装配失败

可以将属性required的值设置为true,则表示能装就装,装不上就不装,此时自动装配的属性为

默认值

但是实际开发时,基本上所有需要装配组件的地方都是必须装配的,用不上这个属性。

拓展:@Qualifier("userServiceImpl") 是 Spring 框架中的一个注解,用于指定注入 Bean 的名称。当一个接口有多个实现类时,使用 @Qualifier 注解可以指定要注入的 Bean 的名称,避免出现歧义。 在 Spring 中,当一个接口有多个实现类时,使用 @Autowired 注解自动注入 Bean 时会出现歧义,因为 Spring 不知道要注入哪个实现类的 Bean。这时可以使用 @Qualifier 注解指定要注入的 Bean 的名称。

例如,假设有一个 UserService 接口和两个实现类 UserServiceImpl1 和 UserServiceImpl2,如果要在另一个类中注入 UserService 的 Bean,可以使用以下代码:

@Autowired

@Qualifier("userServiceImpl1")

private UserService userService;

这样就可以指定要注入的 UserService 的实现类为 UserServiceImpl1,避免了歧义。


需要注意的是,@Qualifier 注解需要与 @Autowired 注解一起使用,@Qualifier 注解指定要注入的 Bean 的名称,@Autowired 注解实现自动注入。总之,@Qualifier("userServiceImpl") 注解是 Spring 框架中的一个注解,用于指定注入


相关文章
|
Java 容器
Java实现Autowired自动注入
Test2正常 Test3空指针 因为不在容器里
130 0
|
7月前
|
Java 容器 Spring
SpringBoot2 | @SpringBootApplication注解 自动化配置流程源码分析(三)
SpringBoot2 | @SpringBootApplication注解 自动化配置流程源码分析(三)
63 0
|
缓存 Java 容器
九.Spring源码剖析-Autowired自动注入原理
这篇文章接上一篇文章属性注入讲一讲 @Autowired 注解的实现源码,这个也是面试被问的比较多的。
|
开发框架 SpringCloudAlibaba Java
Spring注解装配:@Autowired和@Resource使用及原理详解
`@Resource`和`@Autowired`都是实现bean的注入,在日常开发中使用非常频繁,但是使用体验不太一样,笔者喜欢用`@Resource`,因为在使用`@Autowired`时IDEA会出现一些警告爆红提示
351 0
Spring注解装配:@Autowired和@Resource使用及原理详解
|
Java 数据库连接 数据安全/隐私保护
【Spring技术原理】SpringMVC集成Java Bean Validation实现参数检验功能
【Spring技术原理】SpringMVC集成Java Bean Validation实现参数检验功能
236 0
|
测试技术
集成测试时 MockMvc 无法注入
单元测试,还需要写集成测试,就是模拟全流程的请求。 集成测试同样使用的是 MockMvc,但是如果像单元测试一样加上 @WebMvcTest 就不太可以,因为 Service 代码没有 mock 掉,就会报错。
441 0
|
Java Spring
spring学习14-Autowired的使用场景
spring学习14-Autowired的使用场景
105 0
|
Java Spring 容器
@Autowired的使用方式
我相信`@Autowired`注解已经是我们实际开发过程中使用最多的注解之一啦!那你真会了它的全部使用方式吗?接下来,我将带你们去完完全全掌握它。
1032 0
|
XML Java 数据格式
Spring源码(六)-创建Bean流程-createBean
createBean 方法总体可以分为四个小方法。
477 1
|
Java Spring
@Autowired报错的4种解决方案和原因分析!(2)
@Autowired报错的4种解决方案和原因分析!(2)
215 0
@Autowired报错的4种解决方案和原因分析!(2)