(1)SpringBoot启动的时候加载主配置类,开启了自动配置功能@EnableAutoConfiguration。查看@SpringBootApplication
(2)查看@EnableAutoConfiguration,其作用是利用AutoConfigurationImportSelector给容器中导入一些组件。
(3)查看AutoConfigurationImportSelector,其中public String[] selectImports(AnnotationMetadata annotationMetadata)方法内
(4)查看 getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes),获取候选的配置,这个是扫描所有jar包类路径下"META-INF/spring.factories";
(5)然后把扫描到的这些文件包装成Properties对象。
(6)从properties中获取到EnableAutoConfiguration.class类名对应的值,然后把他们添加在容器中。
注:整个过程就是将类路径下"META-INF/spring.factories"里面配置的所有EnableAutoConfiguration的值加入到容器中。