EnableAutoConfigurationImportSelector ,从 spring boot 1.5 以后,EnableAutoConfigurationImportSelector已经不再被建议使用,而是推荐使用 AutoConfigurationImportSelector。
源头:
@SpringBootApplication
—> @EnableAutoConfiguration
—> @Import(EnableAutoConfigurationImportSelector.class)
什么时候被执行的呢?
Springboot应用启动过程中使用ConfigurationClassParser分析配置类时,如果发现注解中存在@Import(ImportSelector)的情况,就会创建一个相应的ImportSelector对象, 并调用其方法 public String[] selectImports(AnnotationMetadata annotationMetadata)。
下面看看 EnableAutoConfigurationImportSelector的 selectImports 方法:
// selectImports 的具体执行逻辑
@Override
public String[] selectImports(AnnotationMetadata annotationMetadata) {
if (!isEnabled(annotationMetadata)) {
return NO_IMPORTS;
}
try {
// 从配置文件中加载 AutoConfigurationMetadata
AutoConfigurationMetadata autoConfigurationMetadata = AutoConfigurationMetadataLoader
.loadMetadata