nacos 配置优先级
nacos 配置优先级
spring:
application:
name: star
profiles:
active: dev
cloud:
nacos:
config:
file-extension: yml
namespace:
ext-config:
- data-id: e.yml
group: default
refresh: true
shared-dataids: sa.yml,sb.yml
refreshable-dataids: r.yml
这里列出三类配置文件:
a: star-dev.yml
b: e.yml
c: sa.yml,sb.yml
读取优先级从低到高, a < b < c,低优先级会覆盖高优先级,这个是不难理解的,先读公共配置,再读扩展配置,再读自己的配置,当然会以自己的配置为准。
nacos 配置下,如无特殊配置,本地配置不会生效。若要本地配置生效,需要在 star-dev.yml 中作如下配置,这三个配置是矛盾的,根据需要选择
spring: cloud: config: allow-override: true // 允许nacos被本地文件覆盖 override-none: true // nacos不覆盖任何本地文件 override-system-properties: true // nacos 覆盖系统属性。注意本地配置文件不是系统属性
本地配置优先级:
1.命令行参数
2.来自java:comp/env的JNDI属性
3.Java系统属性(System.getProperties())
4.操作系统环境变量
5.RandomValuePropertySource配置的random.*属性值
6.jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
7.jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
8.--spring.config.location=C:/application.properties(它在这里)
9.jar包外部的application.properties或application.yml(不带spring.profile)配置文件
10.jar包内部的application.properties或application.yml(不带spring.profile)配置文件
11.@Configuration注解类上的@PropertySource
12.通过SpringApplication.setDefaultProperties指定的默认属性
bootstrap 优先级高于配置文件,但是项目内部配置文件高于 bootstrap,导入文件优先级
高于默认配置