Bootstrap

SpringCloud Alibaba + Nacos 配置文件优先级

在Spring Cloud Alibaba + Nacos 中,配置优先级如下:

  1. nacos 配置中心{服务名}-{profile} 配置
  2. nacos 配置中心扩展配置(通过spring.cloud.nacos.config.extension-configs 指定)
  3. nacos 配置中心共享配置(通过 spring.cloud.nacos.config.shared-configs 指定)
  4. 运行jar包时 通过-D指定的参数,如 -Dknife4j.enable=false
  5. application-{profile}.properties
  6. application-{profile}.yml
  7. application-{profile}.yaml
  8. application.properties
  9. application.yml
  10. application.yaml
  11. bootstrap-{profile}.properties
  12. bootstrap-{profile}.yml
  13. bootstrap-{profile}.yaml
  14. bootstrap.properties
  15. bootstrap.yml
  16. bootstrap.yaml

注意 1:

yaml跟yml具有相同的作用,但是优先级也有区别,yml会覆盖yaml

properties(最高)> yml > yaml(最低)

注意 2:

Spring Cloud Alibaba Nacos Config目前提供了三种配置方式从 Nacos 配置中心获取配置信息
① 通过 spring.cloud.nacos.config.shared-configs支持多个共享 Data Id 的配置
② 通过 spring.cloud.nacos.config.extension-configs配置扩展 Data Id
③ 通过内部相关规则(服务名-环境.扩展名)自动生成相关的 Data Id 配置

三种方式的一个优先级关系是:③ > ② > ①(同一级别的配置数组下标越大,优先级越高;若未用数组下标的方式设置,则下标默认为书写顺序,顺序越靠后,下标越大,优先级越高)

使用下标书写时,若存在extension-configs[1]写在extension-configs[0]前面的情况,优先级仍然以下标为准,不以书写顺序为准;
但是需要注意的是不能写了extension-configs[1]而没有extension-configs[0],否则将启动失败

注意 3:

① shared-configs中若有重复的dataId,不会报错,仍然正常读取;
② extension-configs中若有重复的dataId,也不会报错,仍然正常读取;
③ 若shared-configs中的某个dataId与extension-configs中的某个dataId重复了,仍然不会报错,继续正常读取

注意 4:

1、spring.profiles.active只能设置在本地本地bootstrap或application中,写在nacos中是没有作用的

2、spring.profiles.active在本地的bootstrap和application两个文件中都设置了的话,以bootstrap为准(特殊)

3、若没有在本地bootstrap或application设置spring.profiles.active,则nacos只会监听{服务名}和{服务名}.文件后缀名

如下图:
在这里插入图片描述

通过内部相关规则(服务名-环境.扩展名)自动生成相关的 Data Id 配置,其服务名可通过spring.cloud.config.prefix修改,group也可通过spring.cloud.config.group修改

注意 5:

server.port可以在nacos中设置,而spring.cloud.active不行

但server.port仅在启动时生效,后续在nacos中进行修改是无效的,应用不会重新启动并更换端口

参考:

Spring Boot、Nacos配置文件properties、yml、yaml的优先级

;