1.在SpringBoot项目的启动引导类上都有一个注解@SpringBootApplication
这个注解是一个复合注解, 其中有三个注解构成 , 分别是
- @SpringBootConfiguration : 是@Configuration的派生注解 , 标注当前类是一个SpringBoot的配置类
- @ComponentScan : 开启组件扫描, 默认扫描的是当前启动引导了所在包以及子包
- @EnableAutoConfiguration : 开启自动配置(自动配置核心注解)
2.在@EnableAutoConfiguration注解的内容使用@Import注解导入了一个AutoConfigurationImportSelector.class
的类
在AutoConfigurationImportSelector.class
中的selectImports
方法内通过一系列的方法调用, 最终需要加载类加载路径下META-INF
下面的spring.factories
配置文件
3.在META-INF/spring.factories
配置文件中, 定义了很多的自动配置类的完全限定路径
这些配置类都会被加载
4.加载配置类之后, 会配置类或者配置方法上的@ConditionalOnXxxx条件化注解是否满足条件
如果满足条件就会从属性配置类中读取相关配置 , 执行配置类中的配置方法 , 完成自动配置