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为项目准备了很是多的配置类,这样开发人员就只需按需更改配置就好了,不须要再去手动实现配置。java
最后附上简单的流程图spring