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为项目准备了非常多的配置类,这样开发人员就只需按需更改配置就行了,不需要再去手动实现配置。
最后附上简单的流程图
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。