springBootConfiguration:
代表我们的main也是一个配置类,只不过是核心配置类
@EnableAutoConfiguration:它包括两个注解,一个是
@AutoConfigurationPackage,一个是
@Import({AutoConfigurationImportSelector.class})
AutoConfigurationPackage:利用register给容器中导入一系列组件,将指定的一个包下的所有组件导入进来(mainAppliaction所在包下)。
1.Import:利用getAutoConfigurationEntry(annotationMetadate),给容器中批量导入一系列组件
2.调用List<string> configuration =getCandidateConfigurations(annotationMetadata,attribute)获取所有需要导入到容器中的配置类(组件)
3.利用工厂加载Map<string,list<string>>loadSpringFactories(@Nullable ClassLoader classloader),得到所有的组件
4.从META-INF/spring-factories位置来加载一个文件
spring-boot-autoconfigure-2.3.4.RELEASE.jar包里面也有META-INF/spring.factories