(二)、自动装配

springboot的自动装配大大减轻了开发人员的工作量,约定大于配置的思想深入javaer的心,那么springboot是如何实现自动装配的呢?
下面通过部分源码与图片开始解开其自动配置的神秘面纱。
首先,先从启动类注解开始
(二)、自动装配_第1张图片
可以看到@SpringBootApplication中还有一个@EnableAutoConfiguration注解,从字面意思上就可以看出它与自动装配有不浅的关系,再看看它的全貌。
(二)、自动装配_第2张图片
可以看到@EnableAutoConfiguration上面还有一个@Import注解,其作用是导入一个class,再看看这个AutoConfigurationImportSelector类。
这个类有一个getAutoConfigurationEntry方法,作用是获取需要自动装配类名的set的条目。
(二)、自动装配_第3张图片
getAutoConfigurationEntry中还调用了一个方法getCandidateConfigurations
(二)、自动装配_第4张图片
getCandidateConfigurations中调用了SpringFactoriesLoader.loadFactoryNames(这个方法在上一篇 spi与SpringFactoriesLoader中有详细的解析),从META-INF/spring.factories中读取key为org.springframework.boot.autoconfigure.EnableAutoConfiguration的所有的值返回对应的List。
最后我们来看看spring-boot-autoconfigure包下的META-INF/spring.factories文件。
![上传中...]()
(二)、自动装配_第5张图片
可以看到springboot为项目准备了非常多的配置类,这样开发人员就只需按需更改配置就行了,不需要再去手动实现配置。

最后附上简单的流程图
(二)、自动装配_第6张图片

你可能感兴趣的:(springboot)