一、@SpringBootApplication的三种主要注解
1、@SpringBootConfiguration
标注这个类是一个配置类,是针对于对自身配置。
2、@EnableAutoConfiguration
这个注解是SpringBoot自动配置的关键,是针对外部配置的。通过加载META-INF/spring.factories文件来实现配置文件的加载。
3、@ComponentScan
就是定义扫描的路径从中找出标识了需要装配的类自动装配到spring的bean容器中。
二、spring.factories的加载原理
1、在EnableAutoConfiguration中导入了AutoConfigurationImportSelector这个类。
2、在AutoConfigurationImportSelector类中找到getCandidateConfigurations方法(在118行)。
其中调用了loadFactoryNames这个方法,这是读取classpath上所有的jar包中的所有META-INF/spring.factories属性文件,以 key-value键值对的形式配置,就可以将相应的实现类注入到Spirng 容器中。