SpringBoot自动化配置原理
-
原理核心在启动类上的@SpringBootApplication注解。
其中包含以下三个主要注解:
-
@ComponentScan
作用:扫描启动类所在的包及其子包中的bean放入容器。
-
@SpringBootConfiguration
作用:该注解表示启动类是一个配置类。 -
@EnableAutoConfiguration
@EnableAutoConfiguration注解中包含@Import,@Import会将ImportSelector的实现类AutoConfigurationImportSelector中的selectImports方法返回的数组中对应的类封装的bean加载到IOC容器中。
其中数组内容的来源为getAutoConfigurationEntry方法的返回值
getAutoConfigurationEntry返回对象的主要内容为通过getCandidateConfigurations方法得到的configurations集合,其中getCandidateConfigurations方法
会到以下两个文件中查询需要自动配置的类
接着去起步依赖中查找这两个文件
其中Imports为新版本自动配置文件,factories为老版本文件,两个都有是为了兼容老版本
打开其中一个自动配置类
发现自动配置类中的类上添加了@AutoConfiguration,方法上添加了@Bean注解,这样这些方法的返回值就被加载到了IOC容器中,从而实现了SpringBoot的自动配置。