当前位置: 首页 > news >正文

Spring Cloud融合Nacos配置加载优先级 | Spring Cloud 8

一、前言

Spring Cloud Alibaba Nacos Config 目前提供了三种配置能力从 Nacos 拉取相关的配置:

  • A:通过内部相关规则(应用名、扩展名、profiles)自动生成相关的 Data Id 配置
  • B:通过 spring.cloud.nacos.config.extension-configs的方式支持多个扩展 Data Id 的配置
  • C:通过 spring.cloud.nacos.config.shared-configs支持多个共享 Data Id 的配置

结论:当三种方式共同使用时,他们的一个配置优先级关系是:A > B > C

对于shared-configsextension-configs的内部类Config 只有 dataIdgrouprefresh三个属性,完全不支持namespace配置,配置拉取所需的namespace参数来自spring.cloud.nacos.config.namespace配置。

二、准备条件

基于上篇文章:Spring Cloud融合Nacos实现服务配置中心 | Spring Cloud 7为基础进行扩展。

三、nacos 多配置文件

3.1 配置展示

src/main/resources/bootstrap.yml

server:port: 3001spring:profiles:active: devapplication:name: @artifactId@cloud:nacos:username: @nacos.username@password: @nacos.password@config:server-addr: 192.168.0.31:8848prefix: @artifactId@file-extension: yamlnamespace: public# 用于共享的配置文件shared-configs:- data-id: common‐mysql.yamlgroup: DEFAULT_GROUP- data-id: common‐redis.yamlgroup: DEFAULT_GROUP- data-id: common‐base.yamlgroup: DEFAULT_GROUP# 用于扩展的配置文件# extension-configs 优先级大于 shared-configs,在 shared-configs 之后加载extension-configs:- data-id: @artifactId@-advanced.yamlgroup: DEFAULT_GROUPrefresh: true- data-id: @artifactId@-base.yamlgroup: DEFAULT_GROUPrefresh: trueconfig:name: bootstrap

3.2 加载优先级

  • A:通过内部相关规则(应用名、扩展名、profiles)自动生成相关的 Data Id 配置优先级最高

  • B:扩展配置(extension-configs) > 共享配置(shared-configs)

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

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

3.3 关于refresh配置

扩展配置(extension-configs) > 共享配置(shared-configs)中配置动态刷新需主要事项:

  • Data Id 在默认的组 DEFAULT_GROUP,未配置refresh属性或配置refresh: false,不支持配置的动态刷新
  • Data Id 在默认的组 DEFAULT_GROUP,配置refresh: true,支持动态刷新
  • Data Id 不在默认的组,未配置refresh属性或配置refresh: false,不支持配置的动态刷新
  • Data Id 不在默认的组,配置refresh: true,支持动态刷新

四、测试

启动服务前,nacos服务端完整配置列表如下:
在这里插入图片描述
启动服务查看获取的config.name属性:
在这里插入图片描述

证明 3.2章节结论A正确

nacos服务端中删除nacos-config.yamlnacos-config-dev.yaml配置,查看获取的config.name属性:

在这里插入图片描述

证明 3.2章节结论B、C正确

nacos服务端中删除nacos-config-base.yamlnacos-config-advanced.yaml配置,查看获取的config.name属性:

在这里插入图片描述

证明 3.2章节结论D正确

http://www.lryc.cn/news/28274.html

相关文章:

  • LeetCode 236.二叉树的最近公共祖先
  • awk简单实例(持续更新中)
  • react动态路由组件的封装
  • Vue项目中引入高德地图步骤详解
  • 软件测试用例篇(2)
  • leetcode题解-27. Remove Element
  • 【fly-iot飞凡物联】(4):在linux系统上搭建arduino环境,可以使用离线包,导入到arduino上即可。
  • java实例解析类图中【关联、组合和聚合】的区别
  • 基于m-p条件查询代码生成
  • 【LeetCode】带环链表两道题
  • CSS奇思妙想之-利用CSS裁剪(clip-path)完成各种图形
  • 力扣每日一题刷题总结:哈希表篇
  • 【Redis】redis大key和大value的危害,如何处理?
  • Spring Boot:实现MyBatis动态创建表
  • SpringBoot+Seata在多数据源和feign中的简单使用
  • 计算机网络中的原码、反码、补码
  • 七、Bean的实例化方式
  • Windows程序员学习Linux环境下VI(VIM)编辑器的使用方法
  • react入门篇
  • 阿赵的MaxScript学习笔记分享九《可编辑多面体的操作》
  • 【Redis场景5】集群秒杀优化-分布式锁
  • transformer目标检测开山之作detr
  • 双指针法|位运算|离散化|区间合并
  • Rockchip Android13 GKI开发指南
  • 手把手教你原生JavaScript打造丝滑流畅的轮播图,让你的网站瞬间提升用户体验!
  • git常用基本操作
  • 剑指 Offer —— 数组和字符串
  • Java 字符编码
  • ubuntu-9-安装chrony时间同步
  • CMMI流程规范—服务与维护