打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
SpringBoot及Nacos配置中心加载顺序及覆盖生效关系
userphoto

2023.08.03 河北

关注

目录

一、测试环境版本

二、测试结果

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

综上,本地加载顺序为

  1. bootstrap.yaml
  2. bootstrap.properties
  3. bootstrap-{profile}.yaml
  4. bootstrap-{profile}.properties
  5. application.yaml
  6. application.properties
  7. application-{profile}.yaml
  8. application-{profile}.properties

因此,配置生效覆盖关系:

对于key相同的同名配置项,后加载会覆盖掉前加载,故而后加载的配置项会最终生效!

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,又加载其*.yaml的情形

综上,本地及Nacos配置中心共同加载顺序为

  1. bootstrap.yaml
  2. bootstrap.properties
  3. bootstrap-{profile}.yaml
  4. bootstrap-{profile}.properties
  5. application.yaml
  6. application.properties
  7. application-{profile}.yaml
  8. application-{profile}.properties
  9. nacos配置中心共享配置(通过spring.cloud.nacos.config.shared-configs指定)
  10. Nacos配置中心该服务配置(通过spring.cloud.nacos.config.prefix和spring.cloud.nacos.config.file-extension指定)
  11. Nacos配置中心该服务-{profile}配置(通过spring.cloud.nacos.config.prefix和spring.cloud.nacos.config.file-extension、以及spring.profiles.active指定)

因此,配置生效覆盖关系:

对于key相同的同名配置项,后加载会覆盖掉前加载,故而后加载的配置项会最终生效!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
UC头条:Springboot使用Nacos做配置中心)
五十五张图告诉你微服务的灵魂摆渡者Nacos究竟有多强?
springboot session会话超时设置(九)
springboot 连接远程nacos 老是报localhost:8848连接不上
SpringCloud入门之常用的配置文件 application.yml和 bootstrap.yml区别
Springboot 中配置文件的优先级和加载顺序
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服