扩展配置(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

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

![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)

最新文章

  1. Struts 404 The requested resource is not available
  2. 教你如何删除WIN7系统文件以及无法删除的文件
  3. 使用sql对数据库进行简单的增删改查
  4. gdb 调试学习
  5. bzoj1594
  6. Duff 装置中case情况越多性能越好
  7. C# Programming Study #2
  8. jsDOM编程-小球在盒子里来回撞击
  9. 数据库优化案例——————某知名零售企业ERP系统
  10. AARRR 量化感染率
  11. HDU 3979 Monster (贪心排序)
  12. 数组的翻转(非reverse())
  13. 为什么mysql要做主从复制?
  14. IE6下出现横向滚动条问题的解决方案
  15. 如何在本地用vs调试微信接口
  16. filter 静态资源
  17. 初步学习pg_control文件之十五
  18. steelray project viewer
  19. grafana快速入门
  20. BZOJ_5416_[Noi2018]冒泡排序_DP+组合数+树状数组

热门文章

  1. 十八、SAP中使用IF/ELSE判断语句,以及sy-subrc的用法
  2. Block循环引用问题(Objective-c)
  3. JavaScript——装饰者模式
  4. Java算法练习——最长回文子串
  5. 15 ~ express ~ 用户数据分页原理和实现
  6. bzoj 4195程序自动分析
  7. jQuery元素的左右移动
  8. Jenkins-在CentOS7 上安装配置
  9. decltype关键字
  10. ansible下载文件的多种方式