springboot的主动拆卸大大加重了开发人员的工作量,约定大于配置的思维深刻javaer的心,那么springboot是如何实现主动拆卸的呢?
上面通过局部源码与图片开始解开其主动配置的神秘面纱。
首先,先从启动类注解开始

能够看到@SpringBootApplication中还有一个@EnableAutoConfiguration注解,从字面意思上就能够看出它与主动拆卸有不浅的关系,再看看它的全貌。

能够看到@EnableAutoConfiguration下面还有一个@Import注解,其作用是导入一个class,再看看这个AutoConfigurationImportSelector类。
这个类有一个getAutoConfigurationEntry办法,作用是获取须要主动拆卸类名的set的条目。

getAutoConfigurationEntry中还调用了一个办法getCandidateConfigurations

getCandidateConfigurations中调用了SpringFactoriesLoader.loadFactoryNames(这个办法在上一篇 spi与SpringFactoriesLoader中有具体的解析),从META-INF/spring.factories中读取key为org.springframework.boot.autoconfigure.EnableAutoConfiguration的所有的值返回对应的List。
最初咱们来看看spring-boot-autoconfigure包下的META-INF/spring.factories文件。
![上传中...]()

能够看到springboot为我的项目筹备了十分多的配置类,这样开发人员就只需按需更改配置就行了,不须要再去手动实现配置。

最初附上简略的流程图