Spring Boot自动配置原理

Spring Boot自动配置原理
第一种方法加载配置类:
@EnableAutoConfiguration在对它进行反射处理的过程中,它借助SpringFactoriesLoader对Classpath:/META-INF/spring.factories下面的一些配置进行加载,
Spring Boot自动配置原理
该注解内部有注解@EnableAutoConfigyration
Spring Boot自动配置原理
Spring Boot自动配置原理
Spring Boot自动配置原理
当@SpringBootApplication启动,它内部的注解@EnableAutoConfiguration
对所有spring.factories 中以EnableAutoConfiguration为key
以xxxxAutoConfiguration为value进行加载进来,然后一个个进行初始化或创建
例如:
Spring Boot自动配置原理
Spring Boot自动配置原理
(上面第一行为key,下面的为value)

Java Config中有很多注解,常用的如下:

@configuration //代表该配置是一个Java Config

@ConditionalOnMissingBean //如果不存在这个Bean,就配置这个Bean,在用户配置同样bean的情况下,该bean是不生效的

@ConditionalOnProperty //如果你开启某个配置,那这个bean就会创建(或者初始化),反之,则不创建

@ConditionalOnClass //在某些类存在的情况下,才会创建Bean,例如:
Spring Boot自动配置原理

第二种方法加载配置类:
通过Enablexxxxx加载自动配置
@EnableAsync
Spring Boot自动配置原理
在加载@EnableAsync的时候会引入AsyncConfigurationSelector,而AsyncConfigurationSelector通过一些参数动态加载一些Configuration
Spring Boot自动配置原理