目录
一、测试环境版本
二、测试结果
1、标准的SpringBoot应用
2、含有Nacos配置中心的SpringBoot应用
一、测试环境版本
-
spring-boot-starter-parent 2.7.10
-
spring-cloud-starter-bootstrap 3.1.6
-
spring-cloud-starter-alibaba-nacos-config 2021.0.4.0
-
nacos-client 2.1.1
-
nacos服务端 2.2.1
二、测试结果
1、标准的SpringBoot应用
在标准的SpringBoot应用中,本地配置加载顺序如下:
- bootstrap配置 加载先于 application配置
- 不带profile的配置 加载先于 带profile的配置
- (不含后缀的)同文件名配置 *.yaml 加载先于 *.properties
综上,本地加载顺序为:
- bootstrap.yaml
- bootstrap.properties
- bootstrap-{profile}.yaml
- bootstrap-{profile}.properties
- application.yaml
- application.properties
- application-{profile}.yaml
- application-{profile}.properties
因此,配置生效覆盖关系:
对于key名相同,后加载会覆盖掉前加载,故而最终为后加载的配置项生效!
对于key名不同,则直接生效(会加载,但不会被覆盖);文章来源:https://www.toymoban.com/news/detail-479712.html
注意:不能理解为文件级整体覆盖,而仅是同名key会被后加载的键值覆盖。文章来源地址https://www.toymoban.com/news/detail-479712.html
2、含有Nacos配置中心的SpringBoot应用
带Nacos配置中心的SpringBoot应用中,配置加载顺序如下:
- 本地bootstrap配置 加载先于 本地application配置
- 本地配置 加载先于 nacos配置中心
- nacos配置中心上共享配置(见下说明) 加载先于 nacos配置中心该服务配置(见下说明)
- 不带profile的配置 加载先于 带profile的配置
- 本地(不含后缀的)同文件名配置 *.yaml 加载先于 *.properties
- nacos配置中心因需要通过data ID指定(或者通过spring.cloud.nacos.config.file-extension指定后缀),所以对于Nacos配置中心上的某个Data ID而言,不会存在既加载其*.yaml又加载其*.properties的情形。
综上,本地及Nacos配置中心共同加载顺序为:
- bootstrap.yaml
- bootstrap.properties
- bootstrap-{profile}.yaml
- bootstrap-{profile}.properties
- application.yaml
- application.properties
- application-{profile}.yaml
- application-{profile}.properties
- nacos配置中心共享配置(通过spring.cloud.nacos.config.shared-configs指定)
- Nacos配置中心该服务配置(通过spring.cloud.nacos.config.prefix和spring.cloud.nacos.config.file-extension指定)
- Nacos配置中心该服务-{profile}配置(通过spring.cloud.nacos.config.prefix和spring.cloud.nacos.config.file-extension、以及spring.profiles.active指定)
因此,配置生效覆盖关系:
对于key名相同,后加载会覆盖掉前加载,故而最终为后加载的配置项生效!
对于key名不同,则直接生效(会加载,但不会被覆盖);
注意:不能理解为文件级整体覆盖,而仅是同名key会被后加载的键值覆盖。
到了这里,关于SpringBoot及Nacos配置中心加载顺序及覆盖生效关系的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!