平时我们在properties或yml配置文件能写已有的配置(比如server.port)是有依据的,能配置的属性来源自xxxProperties文件中;下面开始讲解整个过程:
1.我们书写一个主配置类,加了springbootApplication注解,有了该注解,我们就可以启动springboot项目以及加载很多的自动配置类
2.我们点进springbootapplicaiton注解可以看到,如下:
3.我们重点关注@EnableAutoConfiguration,点进去如下:
4.我们具体导了哪些组件就是看这个选择器类,点进这个类并查看它的父类,父类中有一个方法selectImports()就是来获取需要加载哪些自动配置类,如图:
5.我们点进getCandidateConfiguration()里面,如下:
6.我们在点进loadFactoryNames()里,查看它的实现细节:
7.这里的factoryClassName就是我们的EnableAutoConfiguration,根据这个类找到要加载的自动配置类,并把他们添加到容器中:
8.所以每一个xxxAutoConfiguration的类都是容器的组件,用他们来做自动配置,没错,这些配置类又得加入他们各自的组件,以为例子,进入到这个类:
上面这个方法是HttpEncodingAutoConfiguration的一个方法,会向容器导入一个组件,这个组件的属性正是从当前自动配置类的HttpEncodingProperties属性中获取的,也就意味着本自动配置类要加载的组件很大部分属性都是要依赖xxxxProperties对象中的属性,xxxxProperties类中的属性可以理解成很多其他组件属性的集合
9.总结: