【配置中心】使用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