springboot自动配置原理

1,配置文件可以配置的属性

参考官方文档

https://docs.spring.io/spring-boot/docs/2.2.2.RELEASE/reference/html/appendix-application-properties.html#common-application-properties

自动配置原理,非常关键!!

1.springboot启动时候加载了主配置类,开启了自动配置功能;@EnableAutoConfiguration

2.@EnableAutoConfiguration作用:

                利用AutoConfigurationImportSelector

        

protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {
List<String> configurations = SpringFactoriesLoader.loadFactoryNames(getSpringFactoriesLoaderFactoryClass(),
getBeanClassLoader());
Assert.notEmpty(configurations, "No auto configuration classes found in META-INF/spring.factories. If you "
+ "are using a custom packaging, make sure that file is correct.");
return configurations;
}

其中的springFactoriesLoader.loadFactoryNames()方法,点击进入查看

 可以看到工厂资源位置时“META-INFO/spring.factories”下,扫描所有jar路径下的  Meta-info/spring.factories

得到url,封装成properties,加入到result;

将获得到的文件内容登封装成properties对象

 将类路径下meta-info/spring.properties里面配置的所有autoconfigure中的值加入容器

 

 

 自动配置类,必须在一定的条件下才能生效。

通过启动配置debug=true

可以在控制台打印导入自动配置类生效;

原文地址:https://www.cnblogs.com/hamish26/p/12176820.html