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类举例来研究整个过程;