nacos配置文件优先级

本文介绍了一个使用Spring Cloud Nacos配置管理的应用中不同配置文件的优先级。详细解释了本地配置、扩展配置(extension-configs)与共享配置(shared-configs)之间的优先级关系。

各个配置文件的优先级

当前配置文件如下:

spring:
  profiles:
    active: dev
  cloud:
    nacos:
      config:
        server-addr: ${nacos.server-addr}
        username: ${nacos.username}
        password: ${nacos.password}
        namespace: tsp-${spring.profiles.active}
        prefix: project

优先级:userservice-dev.yml(当前环境配置) > userservice.yml(nacos上的)> application.yml(本地的)
在这里插入图片描述
在这里插入图片描述

本地配置文件中的优先级

spring:
  application:
    name: nacos-config-multi
  main:
    allow-bean-definition-overriding: true
  cloud:
    nacos:
      username: ${nacos.username}
      password: ${nacos.password}
      config:
        server-addr: ${nacos.server-addr}
        namespace: ${nacos.namespace}
        # 用于共享的配置文件
        shared-configs:
          - data-id: common-mysql.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP

          - data-id: common-redis.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP

          - data-id: common-base.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP
		......

        # 常规配置文件
        # 优先级大于 shared-configs,在 shared-configs 之后加载
        extension-configs:
          - data-id: nacos-config-advanced.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP
            refresh: true

          - data-id: nacos-config-base.yaml
            group: SPRING_CLOUD_EXAMPLE_GROUP
            refresh: true
  • 扩展配置(extension-configs) > 共享配置(shared-configs)

  • 同为扩展配置,存在如下优先级关系:extension-configs[3] > extension-configs[2] > extension-configs[1] > extension-configs[0]

  • 同为共享配置,存在如下优先级关系:shared-configs[3] > shared-configs[2] > shared-configs[1] > shared-configs[0]

实现本地配置优先

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

注意:一定要配置到远程配置(nacos)上,否则不生效

### Spring Cloud 中 Nacos 配置优先级规则 在 Spring Cloud Nacos 的集成过程中,配置项的加载遵循一定的优先级顺序。以下是关于 Nacos 配置优先级的具体解析: #### 1. **本地配置文件** 当应用程序启动时,默认会读取 `application.properties` 或 `application.yml` 文件中的配置作为基础配置[^1]。 #### 2. **环境变量** 如果存在同名的环境变量,则其优先级高于本地配置文件的内容。例如,在操作系统级别设置的环境变量或者通过命令行参数传递的值会被优先应用[^2]。 #### 3. **Nacos Server 上的远程配置** 对于分布式系统而言,通常会在 Nacos Server 存储全局共享配置或特定服务实例的相关配置数据。这些来自 Nacos 的动态配置具有更高的优先权,能够覆盖掉前面提到的地方定义好的静态属性值[^3]。 - **Data ID 匹配逻辑** 在实际操作中,Spring Boot 应用程序连接到 Nacos 后,会按照 Data ID 来查找对应的配置集合作为输入源之一。具体来说,它支持多种类型的 Data IDs(如默认命名空间下的公共配置、分组内的个性化设定等),并依据一定算法决定哪个版本应该生效[^4]。 - **Grouping Mechanism (分组机制)** 不仅如此,还可以利用 Group 参数进一步细化区分不同用途场景下所需的独立选项列表。这意味着即使两个微服务都订阅同一个 Data ID ,只要它们属于不同的 Groups 就可以各自拥有独特的键值映射关系而互不影响[^5]。 #### 4. **Bootstrap Properties** 另外需要注意的是 bootstrap 属性文件(`bootstrap.properties/yml`)在整个初始化流程里扮演特殊角色——它的作用范围早于常规 application 设置被处理完成之前就已经介入进来;因此其中声明的信息自然也位于整个链条顶端位置[^6]。 ```yaml spring: cloud: nacos: discovery: server-addr: localhost:8848 # Example of specifying the address where Nacos is running. ``` 以上代码片段展示了如何指定 Nacos 服务器地址的一个简单例子。 --- #### 官方文档链接建议查阅部分: 为了获取最权威准确的知识点解释,请访问官方 GitHub 页面以及相关 Wiki 文档页面查看最新版说明材料[^7]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值