配置文件加载顺序
从官方文档可以看出,SpringBoot加载配置文件时,会从以下五个位置进行加载:
本章节就结合源码补充说明下。
我们先来看下ConfigDataImporter.resolveAndLoad()方法。
Map<ConfigDataResolutionResult, ConfigData> resolveAndLoad(ConfigDataActivationContext activationContext, ConfigDataLocationResolverContext locationResolverContext, ConfigDataLoaderContext loaderContext, List<ConfigDataLocation> locations) {
try {
Profiles profiles = activationContext != null ? activationContext.getProfiles() : null;
List<ConfigDataResolutionResult> resolved = this.resolve(locationResolverContext, profiles, locations);
return this.load(loaderContext, resolved);
} catch (IOException var7) {
throw new IllegalStateException("IO error on loading imports from " + locations, var7);
}
}
进入resolveAndLoad()方法的入参locations,表示从哪个位置进行加载:
通过以上结合源码的分析,小伙伴们是否清楚配置文件的加载顺序了呢?
它是和references里边的顺序相反的,我们来总结下(以我们常用的配置文件举例):
1、file:./config/*/application.properties
2、file:./config/*/application.yml
3、file:./config/application.properties
4、file:./config/application.yml
5、file:./application.properties
6、file:./application.yml
7、classpath:/config/application.properties
8、classpath:/config/application.yml
9、classpath:/application.properties
10、classpath:/application.yml