【配置中心】使用spring cloud配置中心后的配置优先级

关于springboot服务使用配置中心后,配置项的优先级问题

springboot的配置优先级

命令行参数 > 操作系统环境变量 > 应用外的配置文件 > 应用内的配置文件

这里命令行参数设置的优先级是最高的,方便部署不同环境。

加入springcloud配置中心后

加入springcloud的配置中心后,优先级并不是想象中的命令行最高优先级。

优先级有:配置中心 > 命令行参数 > 本地application.yml > 本地bootstrap.yml

它的设计者认为,配置中心就是最高优先级的,不允许外部修改。

如果想要覆盖,可在远程配置中加下面配置

spring:
  cloud:
    config:
      # 如果本地配置优先级高,那么 override-none 设置为 true,包括系统环境变量、本地配置文件等配置
      override-none: true
      # 如果想要远程配置优先级高,那么 allow-override 设置为 false,如果想要本地配置优先级高那么 allow-override 设置为 true
      allow-override: true
      # 只有系统环境变量或者系统属性才能覆盖远程配置文件的配置,本地配置文件中配置优先级低于远程配置;注意本地配置文件不是系统属性
      override-system-properties: false

对了,这一段必须写在配置中心才能生效,仅写在本地是没有用的噢




如果有使用 yaml 格式的话,试验了一下,优先级是这样子的:

配置中心 > --server.port > -Dserver.port > application.yml > application.yaml > bootstarp.yml > bootstarp.yaml

有时候,想做一些临时的测试,比如修改个端口号,调整个服务的注册名什么的,发现使用命令行参数怎么不起作用?原来是springcloud 默认配置中心优先级最好,也没毛病。知道怎样调整就行了。

小记一下。

参考:
https://cloud.tencent.com/developer/article/1164182
https://blog.51cto.com/u_15856116/5813173

posted @ 2022-08-25 17:10  aaacarrot  阅读(1631)  评论(0编辑  收藏  举报