4.SpringBoot配置及Nacos配置中心加载顺序及覆盖生效优先关系

本文介绍了在SpringBoot应用中,标准配置与Nacos配置中心加载顺序,以及生效优先关系。在标准SpringBoot应用中,加载顺序从bootstrap到application,再到profile特定配置。而在含有Nacos配置中心的应用中,Nacos配置优先级高于本地配置,且共享配置优于服务特定配置。配置生效遵循后加载覆盖前加载的原则,仅同名key会被覆盖,不同key则并存生效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、测试环境版本

二、测试结果

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名相同,后加载会覆盖掉前加载,故而最终为后加载的配置项生效!

    对于key名不同,则直接生效(会加载,但不会被覆盖);

    注意:不能理解为文件级整体覆盖,而仅是同名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又加载其*.properties的情形

综上,本地及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名相同,后加载会覆盖掉前加载,故而最终为后加载的配置项生效!

    对于key名不同,则直接生效(会加载,但不会被覆盖);

    注意:不能理解为文件级整体覆盖,而仅是同名key会被后加载的键值覆盖。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值