我们都知道SpringBoot让我们的开发变得更简单,以前需要配置Spring、Mybatis等等配置文件,但是在SpringBoot中就不需要再做这些配置
有了解过的朋友应该会知道是因为SpringBoot的启动类上的@SpringBootApplication注解帮我们做了这些事,其中帮我们对配置完成自动装配的注解就是@EnableAutoConfiguration,今天我们就来看看这个注解底层是怎样工作的,不了解的朋友可以看看springboot中需要知道的一些配置 - 一个默默无闻的博客 (only-elder.top)
首先我们点进注解看一下

可以看到这里导入了一个自动配置导入选择器,我们点进去可以看到覆写了这个方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| @Override public String[] selectImports(AnnotationMetadata annotationMetadata) { if (!isEnabled(annotationMetadata)) { return NO_IMPORTS; } AutoConfigurationMetadata autoConfigurationMetadata = AutoConfigurationMetadataLoader .loadMetadata(this.beanClassLoader); AnnotationAttributes attributes = getAttributes(annotationMetadata); List<String> configurations = getCandidateConfigurations(annotationMetadata, attributes); configurations = removeDuplicates(configurations); Set<String> exclusions = getExclusions(annotationMetadata, attributes); checkExcludedClasses(configurations, exclusions); configurations.removeAll(exclusions); configurations = filter(configurations, autoConfigurationMetadata); fireAutoConfigurationImportEvents(configurations, exclusions); return StringUtils.toStringArray(configurations); }
|
我们继续跟进,看它是怎么获取的元数据
1
| protected static final String PATH = "META-INF/"+ "spring-autoconfigure-metadata.properties";
|