最近项目是不是很忙所以有时间看下springboot的自定配置,遂在这里做一下记录,待日后忘记时查阅。翻了下源码 查阅了一些资料了解了下关于spring boot autoconfig(后面简称 autoconfig)的相关内容。springboot框架本身有一套自己支持的autoconfig在 org.springframework.boot.autoconfigure包下META-INF/spring.factories文件中
自动配置的方式是:先加载spring.factories文件中的配置检测classpath中是否存在配置文件对应的类如果存在就加载不存在就跳过。
下面来看我查看源码的路径
@SpringBootApplication >>>>> @EnableAutoConfiguration >>> AutoConfigurationImportSelector
.EnableAutoConfigurationImportSelector类使用了Spring Core包的SpringFactoriesLoader类loadFactoryNamesof()方法.SpringFactoriesLoader会查询META-INF/spring.factories文件中包含的JAR文件当找到spring.factories文后SpringFactoriesLoader将查询配置文件命名的属性.然后通过调用 process()方法获取需要加载的类 。
public void process(AnnotationMetadata annotationMetadata,
DeferredImportSelector deferredImportSelector) {
Assert.state(
deferredImportSelector instanceof AutoConfigurationImportSelector,
() -> String.format("Only %s implementations are supported, got %s",
AutoConfigurationImportSelector.class.getSimpleName(),deferredImportSelector.getClass()