springBoot自动配置原理
1、我们应用切入口的@EnableAutoConfiguration注解:

springBoot启动的时候加载了主配置类,开启了自动配置功能@EnableAutoConfiguration
@EnableAutoConfiguration注解作用:
EnableAutoConfigurationImportSelector.class主要是通过该选择器对容器进行添加组件;

在这里点击进入该方法我们看到:

获取的什么资源呢查看:

获取 所有选择的jar下 META-INF/spring.factories中的配置:

就是将这里面的配置内容读取出来怼成一个properties对象
然后又把properties对象中的值获取出来交给我们的springfactory 去在容器中创建组件,组件的class是在选择器中的getSpringFactoriesLoaderFactoryClass返回:


所以 我们的 整个过程其实就是借助选择器去从EnableAutoConfiguration中获取到值然后把他们添加在容器中的过程;
去autoconfiguration Jar包下找寻meta-inf下的spring.factories :

自动装配就是将类路径下meta-inf 下sppring.factories里面配置的所有的EnableConfiguration的值加入到容器中,所以容器中最终会添加很多的类组件 ,这就是springBoot自动配置开始。每一个 xxxAutoConfiguration类都会在springBoot启动的时候加载到容器中,这些类作用就是用他们做对应类的自动配置。每一个自动配置类完成自己那部分的自动配置功能。
应用举例 :
以HttpEncodingAutoConfiguration类举例来研究整个过程;
本文探讨了SpringBoot自动配置的原理,从@EnableAutoConfiguration注解开始,详细解释了如何通过EnableAutoConfigurationImportSelector选择器读取META-INF/spring.factories文件,并将配置转化为容器中的组件。自动配置涉及从autoconfiguration Jar包下的spring.factories加载所有EnableConfiguration的值,这些配置类在启动时加入容器,各自负责特定部分的自动配置功能。以HttpEncodingAutoConfiguration为例,展示了自动配置的全过程。
2284





