想要知道配置文件优先级首先要知道配置文件有多少种:
本地配置文件:
bootstrap.yml、application.yml、application-{profile}.yml
远程配置文件:
shared-configs(共享配置文件)、extension-configs(扩展配置文件)、${spring.application.name}.yaml(项目名配置文件)、${spring.application.name}-{profile}.yaml(项目名环境配置)
配置文件的优先级从上到下,优先级最高的是项目名环境配置,最低的是bootstrap.yml。总体上远程配置文件高于本地配置文件。
${spring.application.name}-{profile}.yaml(项目名环境配置)
${spring.application.name}.yaml(项目名配置文件)
extension-configs(扩展配置文件)
shared-configs(共享配置文件)
application-{profile}.yml
application.yml
bootstrap.yml
扩展配置文件和共享配置文件可以配置多个,它们之间也是有优先级关系的。
spring:
application:
# 应用名称
name: test
profiles:
# 环境配置
active: dev
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
# register-enabled: false
config:
# 配置中心地址
server-addr: 127.0.0.1:8848
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
- data-id: application1-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
group: DEFAULT_GROUP
- data-id: application2-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
group: DEFAULT_GROUP
extension-configs:
- data-id: config1.yml
group: DEFAULT_GROUP
- data-id: config2.yml
group: DEFAULT_GROUP
扩展配置和共享配置都符合下面配置的优先级比上面配置的优先级高,即config2.yml的优先级比config1.yml的优先级高,共享配置同理。
但是仔测试中有时候需要本地配置能够优先远程配置,这个nacos配置中心也给我们想到了这个问题。我们只需要添加如下配置即可。
spring:
cloud:
config:
# 如果本地配置优先级高,那么 override-none 设置为 true,包括系统环境变量、本地配置文件等配置
override-none: true
# 如果想要远程配置优先级高,那么 allow-override 设置为 false,如果想要本地配置优先级高那么 allow-override 设置为 true
allow-override: true
# 只有系统环境变量或者系统属性才能覆盖远程配置文件的配置,本地配置文件中配置优先级低于远程配置;注意本地配置文件不是系统属性
override-system-properties: false
需要注意这个配置要写在远程配置中心中!!!(也就是直接服务名称.yml,不可以写在服务名-环境名称.yml中)
版权归原作者 L1511768722 所有, 如有侵权,请联系我们删除。