目录
@SpringBootApplication
@SpringBootApplication:用来标注一个Spring Boot主程序类 , 说明这是一个Spring Boot应用,包括了@SpringBootConfiguration、@EnableAuto Configuration和@ComponentScan三个注解。
1.1 @SpringBootConfiguration
@SpringBootConfiguration:表示这是一个SpringBoot的配置类,在这个类的源码中只有一个Configuration的注解,表示该类为配置类。
1.2 @EnableAutoConfiguration
@EnableAutoConfiguration:开启自动配置功能,这哥注解就是SpringBoot进行自动配置的核心,包括@AutoConfigurationPackage和@Import(Auto
ConfigurationImportSelector.class)两个注解。
1.2.1 @AutoConfigurationPackage
@AutoConfigurationPackage:自动配置包,包括了一个@Import注解,给容器导入了自动配置包的注册器;
AutoConfigurationPackages.Registrar.class:将主启动类的所在包及包下面所有子包里面的所有组件扫描到Spring容器。
1.2.2 @Import(AutoConfigurationImportSelector.class)
@Import(AutoConfigurationImportSelector.class):导入自动配置导入选择器组件;
AutoConfigurationImportSelector.class:自动配置导入选择器,主要是从类路径下的META-INF/spring.factories中获取资源。
通过SpringFactoriesLoader 类的loadFactoryNames静态方法加载出配置文件;getSpringFactoriesLoaderFactoryClass()返回的就是自动导入配置文件的注解类:EnableAutoConfiguration。
public static List<String> loadFactoryNames(Class<?> factoryType, @Nullable ClassLoader classLoader) {
String factoryTypeName = factoryType.