springboot只需要一个主配置类就可以启动一系列的功能。主要在于@SpringbootApplication这个注解。
1、@SpringbootApplication注解
打开后发现,这个注解其实标注这个类本身也是一个配置类。
@EnableAutoConfiguration表示开启自动配置,这也是最重要的一个注解。
@ComponentScan是开启组件扫描的注解。
2、@EnableAutoConfiguration注解
这个注解最重要的是@Import这个注解向容器里面导入的组件。图中可以看到,它导入的是AutoConfigurationImportSelector.class,我们看一下这个类的源码。
我们看到,在这个方法中标红的位置返回了一系列的配置,我们只需要看一下,它返回的configurations是哪些,就知道了。
3、configurations集合
我们看到,这个集合是通过SpringFactoriesLoader去加载一些组件,打开loadFactoryNames这个方法会发现
通过图中红框位置加载配置文件,这个配置文件如下
打开配置文件发现其最终就是加载这个文件中的许多的类的全路径,将其实例化并放入容器内。
所以可以得到以下结论:
@SpringBootApplication ——> @EnableAutoConfiguration ——> @Import ——> EnableAutoConfigurationImportSelector.class ——> List configurations ——> SpringFactoriesLoader.loadFactoryNames() ——> spring.factories。
这应该是整个过程。