@ConditionalOnMissingBean 原理
时间: 2023-11-14 07:43:58 浏览: 33
@ConditionalOnMissingBean注解是Spring Boot中的一个条件注解,其作用是当某个Bean不存在时,才会加载该Bean。其原理是通过BeanFactory中的beanDefinitionMap来获取已存在的Bean名称,如果该名称不存在则加载该Bean。同时该注解支持多个参数,可以通过参数指定Bean的作用域、Bean是否可以为空等属性。
相关问题
spring boot 自动装配的原理
Spring Boot的自动装配原理是基于Spring框架的依赖注入和控制反转(DI/IOC)的机制实现的。
Spring Boot通过扫描classpath下的META-INF/spring.factories文件,加载所有指定的自动配置类(AutoConfiguration),然后根据条件判断决定是否将这些配置类应用到当前的Spring Boot项目中。
自动配置类通常使用`@ConditionalOnClass`、`@ConditionalOnMissingBean`、`@ConditionalOnProperty`等注解来定义条件,当满足这些条件时,自动配置类才会生效。
其中,`@ConditionalOnClass`注解用于判断某个类是否在classpath中存在,`@ConditionalOnMissingBean`注解用于判断是否已经有某个Bean被注入,`@ConditionalOnProperty`注解用于判断是否存在指定的配置属性。
当自动配置类生效时,它们会根据约定的规则自动配置一些Bean、组件、过滤器等,并将它们注册到Spring容器中供项目使用。
总结来说,Spring Boot的自动装配原理就是通过条件判断和约定规则,自动配置一些常用的组件和功能,简化了开发者对Spring框架的配置工作。
EnableAutoConfiguration 自动注解原理
Spring Boot 的 `EnableAutoConfiguration` 是一个非常重要的注解,它的作用是自动配置 Spring 应用程序。它通过扫描 classpath 下的依赖,根据类路径中的 jar 包、类的注解等信息,推断出应该如何配置 Spring 的各个组件。
具体来说,`EnableAutoConfiguration` 注解会触发 Spring Boot 的自动配置机制,通过 `@Conditional` 注解来判断是否需要配置某个组件。`@Conditional` 注解是一个条件化注解,它可以根据特定条件来判断是否需要创建某个 Bean。
例如,`@ConditionalOnClass` 注解用于判断某个类是否存在于 classpath 中,如果存在,则创建对应的 Bean。而 `@ConditionalOnMissingBean` 则用于判断是否已经存在该 Bean,如果已经存在,则不再创建。
总的来说,`EnableAutoConfiguration` 注解的原理就是通过 Spring Boot 的自动配置机制来自动配置 Spring 应用程序,节省了开发者手动配置的时间和精力。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)