Spring Cloud Alibaba 教程 | Nacos(五)
扩展配置(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注册中心,加载多个配置文件。
<!--注册中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
spring:
application:
name: nacos-consumer
cloud:
nacos:
discovery:
server-addr: 192.168.0.127:8848 #注册中心地址
config:
server-addr: 192.168.0.127:8848 #配置中心地址
ext-config: #可以加载同一个namespace下面的不同group的多个配置文件
- data-id: database.properties
group: GROUP_A
refresh: true
- data-id: log.properties
group: GROUP_A
refresh: true
server:
port: 17358
ext-config配置是一个数组List类型,每个配置中包含三个参数:data-id、group,refresh。其中refresh参数用于控制这个配置文件中的内容时候是否支持自动刷新,默认情况下,只有默认加载的配置才会自动刷新,对于这些扩展的配置加载内容需要配置该设置时候才会实现自动刷新。
第三步:使用配置参数,验证结果。
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConsumer {
public static void main(String[] args) {
SpringApplication.run(NacosConsumer.class,args);
}
@RefreshScope
@RestController
public class TestController {
@Value("${config.address}")
private String address;
@Value("${database.url}")
private String url;
@Value("${log.data}")
private String data;
@GetMapping("/getConfig")
public String getConfig() {
return "address:"+address+" url:"+url+" data:"+data;
}
}
}

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

spring:
application:
name: nacos-consumer
cloud:
nacos:
discovery:
server-addr: 192.168.0.127:8848 #注册中心地址
config:
server-addr: 192.168.0.127:8848 #配置中心地址
ext-config: #可以加载同一个namespace下面的不同group的多个配置文件
- data-id: database.properties
group: GROUP_A
refresh: true
- data-id: log.properties
group: GROUP_A
refresh: true
#可以加载当前group下面的多个配置文件
shared-dataids: database.properties
refreshable-dataids: database.properties
server:
port: 17358

我们发现结果是相同的,首先我们先来看下应用加载这些配置文件的顺序,可以从控制台看到配置的文件的加载顺序:
Loading nacos data, dataId: 'database.properties', group: 'DEFAULT_GROUP'
Loading nacos data, dataId: 'database.properties', group: 'GROUP_A'
Loading nacos data, dataId: 'log.properties', group: 'GROUP_A'
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文件之后,屏蔽掉相关配置,重启应用结果就会发生改变。
spring:
application:
name: nacos-consumer
cloud:
nacos:
discovery:
server-addr: 192.168.0.127:8848 #注册中心地址
config:
server-addr: 192.168.0.127:8848 #配置中心地址
ext-config: #可以加载同一个namespace下面的不同group的多个配置文件
# - data-id: database.properties
# group: GROUP_A
# refresh: true
- data-id: log.properties
group: GROUP_A
refresh: true
#可以加载当前group下面的多个配置文件
shared-dataids: database.properties
refreshable-dataids: database.properties
server:
port: 17358

关注公众号了解更多原创博文
Spring Cloud Alibaba 教程 | Nacos(五)的更多相关文章
- Spring Cloud Alibaba 教程 | Nacos(二)
源码解析客户端注册过程 nacos作为注册中心,包含了nacos服务端(注册中心服务)和nacos客户端,nacos注册中心服务上面一讲已经介绍过了它是一个用Java语言编写开源web项目,并且拥有自 ...
- Spring Cloud Alibaba 教程 | Nacos(一)
什么是Nacos Nacos是一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台. Nacos 致力于帮助您发现.配置和管理微服务.Nacos提供了一组简单易用的特性集,帮助您快速实现动态 ...
- Spring Cloud Alibaba 教程 | Nacos(三)
使用Nacos作为配置中心 前面我们已经介绍过滤Nacos是一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台.所以它可以作为注册中心和配置中心,作为注册中心Nacos可以让我们灵活配置多 ...
- Spring Cloud Alibaba 教程 | Nacos(四)
Nacos环境隔离 Nacos管理台有一个单独的菜单"命名空间",里面默认存在一个名为"public"的默认命名空间,我们在使用Nacos时不管是作为注册中心还 ...
- Spring Cloud Alibaba 教程 | Nacos(六)
集群模式部署 前面我们已经学习了Nacos作为注册中心.配置中心的相关功能,但是我们之前启动Nacos是通过单实例模式启动的,只适合在学习和开发阶段,生产环境需要保证Nacos的高可用,所以今天我们来 ...
- Spring Cloud Alibaba 使用nacos 注册中心
### 背景 上一文我们讲到了如何去搭建注册中心,这一次我们讲述如何使用nacos作为注册中心 ### spring-cloud-alibaba-basis 创建基础依赖 首先我们创建一个spring ...
- Spring Cloud Alibaba(6)---Nacos持久化Mysql8.0版本
Nacos持久化Mysql8.0版本 有关Nacos之前写过三篇文章. Spring Cloud Alibaba(3)---Nacos概述 Spring Cloud Alibaba(4)---Naco ...
- Spring Cloud Alibaba(2)---Nacos概述
Spring Cloud Alibaba(2)---nacos概述 上一篇博客讲了有关 SpringCloudAlibaba的概述,这篇开始讲SpringCloudAlibaba组件之一---Naco ...
- Spring Cloud Alibaba(4)---Nacos(注册中心)
Nacos(注册中心) 有关Spring Cloud Alibaba之前写过三篇文章. Spring Cloud Alibaba(1)---入门篇 Spring Cloud Alibaba(2)--- ...
随机推荐
- 指令——touch
一个完整的指令的标准格式: Linux通用的格式——#指令主体(空格) [选项](空格) [操作对象] 一个指令可以包含多个选项,操作对象也可以是多个. 指令:touch 作用:创建文件 语法: ...
- mybatis update set 多个字段
<update id="updateCustomer" parameterType="com.entrym.domain.Customer"> UP ...
- 获得spring
这里 手动下载 各版本的发行包 这里是 官方项目地址 这里是在 GitHub上托管源代码 的地方 已知spring依赖的其他jar commons-logging-1[1].0.4.jar
- Python 中使用 ddt 来进行数据驱动,批量执行用例,修改ddt代码
1. 什么是数据驱动? 使用数据驱动有什么好处? 用例执行是靠数据来驱动的,每条测试用例除了测试数据不一样意外,所有的用例代码都是一样的,为了使用例批量执行,我们会使用数据驱动的思想来批量执行测试用例 ...
- PHP开发-模板的使用
通过今天晚上半个多小时的赵老师对模板的介绍,大致对模板的使用.结构以及开发模板的思想有了个大致的了解. 为什么要开发模板:模板就是将PHP发过过程中使用到.需要操作的事物封装成对象.以便在使用到的时候 ...
- sql编程利器,Sql Prompt下载及安装方法
Sql Prompt只能提示及其格式化用起来非常方便: 推荐网址:www.4-yecao.com 免费下载地址:http://download.csdn.net/detail/caizz520/455 ...
- C# ------ MEF
参考 参考 MEF全称Managed Extensibility Framework, 是一个用于创建可扩展的轻型应用程序的库.开发人员可以利用MEF发现并使用扩展,但并不需要配置,而且还可以在应用程 ...
- Tornado中的Cookie设置
Tornado中的cookie分为两种--普通cookie和安全cookie 普通cookie 1.创建cookie 原型 self.set_cookie(name, value, domain=No ...
- 每天一点点之vue框架开发 - vue 动态替换路由(地址栏)参数
import merge from 'webpack-merge': // 修改原有参数 this.$router.push({ query:merge(this.$route.query,{'max ...
- jQuery琐碎
函数(以click事件为例)在jsp页面和js中的不同写法 onclick="getInfo(this);" function getInfo(obj){ var $this=$( ...