Spring Boot自动配置原理
Spring Boot自动配置原理
第一种方法加载配置类:
@EnableAutoConfiguration在对它进行反射处理的过程中,它借助SpringFactoriesLoader对Classpath:/META-INF/spring.factories下面的一些配置进行加载,
该注解内部有注解@EnableAutoConfigyration
当@SpringBootApplication启动,它内部的注解@EnableAutoConfiguration
对所有spring.factories 中以EnableAutoConfiguration为key
以xxxxAutoConfiguration为value进行加载进来,然后一个个进行初始化或创建
例如:
(上面第一行为key,下面的为value)
Java Config中有很多注解,常用的如下:
@configuration //代表该配置是一个Java Config
@ConditionalOnMissingBean //如果不存在这个Bean,就配置这个Bean,在用户配置同样bean的情况下,该bean是不生效的
@ConditionalOnProperty //如果你开启某个配置,那这个bean就会创建(或者初始化),反之,则不创建
@ConditionalOnClass //在某些类存在的情况下,才会创建Bean,例如:
第二种方法加载配置类:
通过Enablexxxxx加载自动配置
@EnableAsync
在加载@EnableAsync的时候会引入AsyncConfigurationSelector,而AsyncConfigurationSelector通过一些参数动态加载一些Configuration