操作方法
SpringBoot启动的时候加载主配置类,开启了自动配置功能@EnableAutoConfiguration。
@EnableAutoConfiguration的作用是利用AutoConfigurationImportSelector给容器中导入一些组件。
可以查看public String[] selectImports(AnnotationMetadata annotationMetadata)方法的内容。
通过protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes)获取候选的配置,这个是扫描所有jar包类路径下"META-INF/spring.factories";
然后把扫描到的这些文件包装成Properties对象。
从properties中获取到EnableAutoConfiguration.class类名对应的值,然后把他们添加在容器中。
整个过程就是将类路径下"META-INF/spring.factories"里面配置的所有EnableAutoConfiguration的值加入到容器中。
每一个这样XXAutoConfiguration类都是容器中的一个组件都加入到容器中,用他们来做自动配置。 每一个自动配置类进行自动配置功能,以HttpEncodingAutoConfiguration为例解释自动配置原理。
根据当前不同的条件判断,决定这个配置是否生效。