1. SpringBoot启动的时候加载主配置类,开启了自动配置功能@EnableAutoConfiguration
2. @EnableAutoConfiguration的作用: 收集所有spring.factories中EnableAutoConfiguration相关bean的类,并将得到的类注册到spring容器中。
–> AutoConfigurationImportSelector
–> selectImports.getAutoConfigurationEntry()
–>getCandidateConfigurations(annotationMetadata, attributes)
–> SpringFactoriesLoader.loadFactoryNames() 扫描所有jar包类路径下META-INF/spring.factories
–> getSpringFactoriesLoaderFactoryClass() 找以EnableAutoConfiguration标注的类
3. 探究HttpEncodingAutoConfiguration(Http编码自动配置)为例,解释自动配置原理
@Configuration(proxyBeanMethods = false) //表示这是一个配置类,跟以前编写的配置文件一样,也可以给容器中添加组件
@EnableConfigurationProperties(HttpProperties.class)//启动指定类的ConfigurationProperties功能;将配置文件中对应的值和HttpProperties绑定起来;并把HttpProperties加入到ioc容器中
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)//判断当前应用是否是web应用,如果是,当前配置类生效
@Con