扩展配置(extended configurations)

通过之前的学习,我们知道应用引入nacos配置中心之后默认将会加载Data ID= ${prefix} - ${spring.profiles.active} . ${file-extension} 默认Group为public的配置文件,并且可以通过下面三个参数指定修改默认的配置文件:

  • spring.cloud.nacos.config.prefix
  • spring.cloud.nacos.config.file-extension
  • spring.profiles.active

有时候一个模块项目需要多个配置文件,这时候我们就可以使用nacos的扩展配置参数(extended configurations)引用同一个namesapce下面更多的配置文件。

第一步:创建多个配置文件。我们在默认的namespace下创建了三个配置文件,其中nacos-consumer.properties配置在默认的组DEFAULT_GROUP,database.properties和log.properties则配置在Group_A组里。

  • database.properties配置内容是:database.url=127.0.0.1
  • log.properties配置配置内容是:log.data=/home/logs
  • consumer.properties配置配置内容是:config.address=shanghai



第二步:应用引入nacos注册中心,加载多个配置文件。

  1. <!--注册中心-->
  2. <dependency>
  3. <groupId>com.alibaba.cloud</groupId>
  4. <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  5. </dependency>
  1. spring:
  2. application:
  3. name: nacos-consumer
  4. cloud:
  5. nacos:
  6. discovery:
  7. server-addr: 192.168.0.127:8848 #注册中心地址
  8. config:
  9. server-addr: 192.168.0.127:8848 #配置中心地址
  10. ext-config: #可以加载同一个namespace下面的不同group的多个配置文件
  11. - data-id: database.properties
  12. group: GROUP_A
  13. refresh: true
  14. - data-id: log.properties
  15. group: GROUP_A
  16. refresh: true
  17. server:
  18. port: 17358

ext-config配置是一个数组List类型,每个配置中包含三个参数:data-id、group,refresh。其中refresh参数用于控制这个配置文件中的内容时候是否支持自动刷新,默认情况下,只有默认加载的配置才会自动刷新,对于这些扩展的配置加载内容需要配置该设置时候才会实现自动刷新。

第三步:使用配置参数,验证结果。

  1. @SpringBootApplication
  2. @EnableDiscoveryClient
  3. public class NacosConsumer {
  4. public static void main(String[] args) {
  5. SpringApplication.run(NacosConsumer.class,args);
  6. }
  7. @RefreshScope
  8. @RestController
  9. public class TestController {
  10. @Value("${config.address}")
  11. private String address;
  12. @Value("${database.url}")
  13. private String url;
  14. @Value("${log.data}")
  15. private String data;
  16. @GetMapping("/getConfig")
  17. public String getConfig() {
  18. return "address:"+address+" url:"+url+" data:"+data;
  19. }
  20. }
  21. }

共享配置(shared configurations)

上面的扩展配置实际上是一种namesapce下的共享配置,根据上一篇文章环境隔离的经典案例划分,就是一种企业内各项目之间的共享配置。有时候我们希望有些配置文件只在同一个项目下的不同的环境之间共享(实际上是一种group下的共享配置),这时候就可以使用Nacos的共享配置(shared configurations)去实现。

添加一个内容为database.url=127.0.0.2的新的配置文件database.properties,Group为DEFAULT_GROUP。

  1. spring:
  2. application:
  3. name: nacos-consumer
  4. cloud:
  5. nacos:
  6. discovery:
  7. server-addr: 192.168.0.127:8848 #注册中心地址
  8. config:
  9. server-addr: 192.168.0.127:8848 #配置中心地址
  10. ext-config: #可以加载同一个namespace下面的不同group的多个配置文件
  11. - data-id: database.properties
  12. group: GROUP_A
  13. refresh: true
  14. - data-id: log.properties
  15. group: GROUP_A
  16. refresh: true
  17. #可以加载当前group下面的多个配置文件
  18. shared-dataids: database.properties
  19. refreshable-dataids: database.properties
  20. server:
  21. port: 17358



我们发现结果是相同的,首先我们先来看下应用加载这些配置文件的顺序,可以从控制台看到配置的文件的加载顺序:

  1. Loading nacos data, dataId: 'database.properties', group: 'DEFAULT_GROUP'
  2. Loading nacos data, dataId: 'database.properties', group: 'GROUP_A'
  3. Loading nacos data, dataId: 'log.properties', group: 'GROUP_A'
  4. Loading nacos data, dataId: 'nacos-consumer.properties', group: 'DEFAULT_GROUP'

1、先加载shared-dataids配置

2、再加载ext-config配置

3、最后加载默认配置

因为shared-dataids配置被最先加载,所以后面的ext-config配置会覆盖前面的配置,所以导致新增加的database.properties没有起作用。

删掉group为GROUP_A的database.properties文件之后,屏蔽掉相关配置,重启应用结果就会发生改变。

  1. spring:
  2. application:
  3. name: nacos-consumer
  4. cloud:
  5. nacos:
  6. discovery:
  7. server-addr: 192.168.0.127:8848 #注册中心地址
  8. config:
  9. server-addr: 192.168.0.127:8848 #配置中心地址
  10. ext-config: #可以加载同一个namespace下面的不同group的多个配置文件
  11. # - data-id: database.properties
  12. # group: GROUP_A
  13. # refresh: true
  14. - data-id: log.properties
  15. group: GROUP_A
  16. refresh: true
  17. #可以加载当前group下面的多个配置文件
  18. shared-dataids: database.properties
  19. refreshable-dataids: database.properties
  20. server:
  21. port: 17358

关注公众号了解更多原创博文

![Alt](https://img-blog.csdnimg.cn/20191104123907694.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA3Mzk1NTE=,size_16,color_FFFFFF,t_70#pic_center =591x339)

Spring Cloud Alibaba 教程 | Nacos(五)的更多相关文章

  1. Spring Cloud Alibaba 教程 | Nacos(二)

    源码解析客户端注册过程 nacos作为注册中心,包含了nacos服务端(注册中心服务)和nacos客户端,nacos注册中心服务上面一讲已经介绍过了它是一个用Java语言编写开源web项目,并且拥有自 ...

  2. Spring Cloud Alibaba 教程 | Nacos(一)

    什么是Nacos Nacos是一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台. Nacos 致力于帮助您发现.配置和管理微服务.Nacos提供了一组简单易用的特性集,帮助您快速实现动态 ...

  3. Spring Cloud Alibaba 教程 | Nacos(三)

    使用Nacos作为配置中心 前面我们已经介绍过滤Nacos是一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台.所以它可以作为注册中心和配置中心,作为注册中心Nacos可以让我们灵活配置多 ...

  4. Spring Cloud Alibaba 教程 | Nacos(四)

    Nacos环境隔离 Nacos管理台有一个单独的菜单"命名空间",里面默认存在一个名为"public"的默认命名空间,我们在使用Nacos时不管是作为注册中心还 ...

  5. Spring Cloud Alibaba 教程 | Nacos(六)

    集群模式部署 前面我们已经学习了Nacos作为注册中心.配置中心的相关功能,但是我们之前启动Nacos是通过单实例模式启动的,只适合在学习和开发阶段,生产环境需要保证Nacos的高可用,所以今天我们来 ...

  6. Spring Cloud Alibaba 使用nacos 注册中心

    ### 背景 上一文我们讲到了如何去搭建注册中心,这一次我们讲述如何使用nacos作为注册中心 ### spring-cloud-alibaba-basis 创建基础依赖 首先我们创建一个spring ...

  7. Spring Cloud Alibaba(6)---Nacos持久化Mysql8.0版本

    Nacos持久化Mysql8.0版本 有关Nacos之前写过三篇文章. Spring Cloud Alibaba(3)---Nacos概述 Spring Cloud Alibaba(4)---Naco ...

  8. Spring Cloud Alibaba(2)---Nacos概述

    Spring Cloud Alibaba(2)---nacos概述 上一篇博客讲了有关 SpringCloudAlibaba的概述,这篇开始讲SpringCloudAlibaba组件之一---Naco ...

  9. Spring Cloud Alibaba(4)---Nacos(注册中心)

    Nacos(注册中心) 有关Spring Cloud Alibaba之前写过三篇文章. Spring Cloud Alibaba(1)---入门篇 Spring Cloud Alibaba(2)--- ...

随机推荐

  1. Windows和Ubuntu双系统时钟同步的方法。

    参考文章 https://blog.csdn.net/zyqblog/article/details/79318955 电脑安装Ubuntu和Windows双系统以后,每次Ubuntu时间和时区设了以 ...

  2. 1 —— js 语法回顾 —— 数据类型。流程控制。数组

    一,数据类型 字符串 . 数值 .布尔. null . undefined . 对象  ( 数组 . 函数 function(){} . object) undefined 出现的情景 :  (1)变 ...

  3. MongoDB 删除,添加副本集,并修改副本集IP等信息

    MongoDB 删除,添加副本集,并修改副本集IP等信息 添加副本,在登录到主节点下输入 rs.add("ip:port"); 删除副本 rs.remove("ip:po ...

  4. Gauss列主消元

    问题:1.列主消元为什么精度高? 2.fabs函数精确度 #include<iostream> #include<cstdio> #include<cstring> ...

  5. office组件导入导出常见异常记录

    异常:未能加载文件或程序集"Microsoft.Office.Interop.Excel, Version=11.0.0.0, Culture=neutral, PublicKeyToken ...

  6. Elasticsearch 更新文档

    章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...

  7. 转载:Nginx做反向代理和负载均衡时“X-Forwarded-For”信息头的处理

    转载自:https://blog.51cto.com/wjw7702/1150225 一.概述 如今利用nginx做反向代理和负载均衡的实例已经很多了,针对不同的应用场合,还有很多需要注意的地方,本文 ...

  8. HTML布局梳理

    布局是一个很艺术的话题,即使是相同的HTML文档结构,但加上不同的css样式就会呈现出不同的效果.接下来就来总结一下html常用的布局. 一.布局的分类: 根据页面板块分类: 页面的板块主要是根据栏目 ...

  9. 51nod 1022 石子归并 环形+四边形优化

    1022 石子归并 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题  收藏  关注 N堆石子摆成一个环.现要将石子有次序地合并成一堆.规定每次只能选相邻的2 ...

  10. /etc/apt/sources.list.d

    deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main# deb-src http://ppa.launchpad.net/w ...