太棒啦!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空指针 因为不在容器里
120 0
|
5月前
|
Java 容器 Spring
SpringBoot2 | @SpringBootApplication注解 自动化配置流程源码分析(三)
SpringBoot2 | @SpringBootApplication注解 自动化配置流程源码分析(三)
53 0
|
缓存 Java 容器
九.Spring源码剖析-Autowired自动注入原理
这篇文章接上一篇文章属性注入讲一讲 @Autowired 注解的实现源码,这个也是面试被问的比较多的。
|
前端开发
SpringMVC 的工作流程
SpringMVC 的工作流程
99 0
|
NoSQL 安全 Java
踩坑篇之WebSocket实现类中无法使用@Autowired注入对象
踩坑篇之WebSocket实现类中无法使用@Autowired注入对象
190 0
|
Java 数据库连接 数据安全/隐私保护
【Spring技术原理】SpringMVC集成Java Bean Validation实现参数检验功能
【Spring技术原理】SpringMVC集成Java Bean Validation实现参数检验功能
215 0
|
Java Spring
spring学习14-Autowired的使用场景
spring学习14-Autowired的使用场景
99 0
|
Java Spring 容器
@Autowired的使用方式
我相信`@Autowired`注解已经是我们实际开发过程中使用最多的注解之一啦!那你真会了它的全部使用方式吗?接下来,我将带你们去完完全全掌握它。
1009 0
|
Java Spring
@Autowired报错的4种解决方案和原因分析!(2)
@Autowired报错的4种解决方案和原因分析!(2)
156 0
@Autowired报错的4种解决方案和原因分析!(2)
|
Java 数据库连接 Spring
@Autowired报错的4种解决方案和原因分析!(4)
@Autowired报错的4种解决方案和原因分析!(4)
414 0
@Autowired报错的4种解决方案和原因分析!(4)