了解自动配置
自动配置
- 基于添加的 JAR 依赖自动对 Spring Boot 应用程序进行配置
基于我们classpath中出现的类 或者 是application.properties 或者是环境上下文当中的配置,能够通过这些东西为依据,来为我的springboot应用程序来做配置的动作,这个配置是自动的 - spring-boot-autoconfiguration(springboot中自动配置的代码)
开启自动配置
- @EnableAutoConfiguration (开启配置注解 通过exclude 属性 去排除掉某个配置类)
• exclude = Class<?>[] - @SpringBootApplication (这个注解中包含@EnableAutoConfiguration )
自动配置的实现原理
@EnableAutoConfiguration (import了一个AutoConfigurationImportSelector)
- AutoConfigurationImportSelector(在这个里面 它会去加载spring.factories 中的一个特定属性autoconfigure.EnableAutoConfiguration )
- META-INF/spring.factories
• org.springframework.boot.autoconfigure.EnableAutoConfiguration
加载自动配置
进入该方法
通过getSpringFactoriesLoaderFactoryClass去加载配置
在spring.factories这个文件中,就有Auto Configure
条件注解
- @Conditional
- @ConditionalOnClass (当classpath中出现哪个类的时候 条件生效)
- @ConditionalOnBean (当容器这里存在某个特定bean中如何做)
- @ConditionalOnMissingBean (当容器这里不存在某个特定bean中如何做)
- @ConditionalOnProperty (当我的属性配置了特定属性 该怎么做)
- …
springboot 通过以上的条件注解完成自动配置的,这些注解都是通过代码实现的
了解自动配置的情况
观察自动配置的判断结果
- –debug
在命令行增加–debug这个标准 在应用程序中打印出自动配置的结果
ConditionEvaluationReportLoggingListener - Positive matches
匹配的自动配置 - Negative matches
没有匹配的自动配置 - Exclusions
排除掉的自动配置 - Unconditional classes
无条件配置的
在AutoconfigureDemoApplication中,打开edit Configurations
在Program arguments中输入 --debug
我们可以在控制台看到 所有的CONDITIONS报告