前情回顾:html
对于Nacos做为配置中心的使用,经过以前的几篇博文,咱们已经介绍了如何在Nacos中建立配置内容、Nacos配置内容与Spring应用配置之间的对应关系以及实战中多环境下的配置管理方案。git
可是,咱们实际应用过程当中还会常常碰到这样的问题:有时候咱们会对应用的配置根据具体做用作一些拆分,存储在不一样的配置文件中,除了归类不一样的配置以外,也能够便于共享配置给不一样的应用。对于这样的需求,Nacos也能够很好的支持,下面就来具体介绍一下,当使用Nacos时,咱们如何加载多个配置,以及如何共享配置。github
经过以前的学习,咱们已经知道Spring应用对Nacos中配置内容的对应关系是经过下面三个参数控制的:spring
默认状况下,会加载Data ID=${spring.application.name}.properties
,Group=DEFAULT_GROUP
的配置。数组
假设如今有这样的一个需求:咱们想要对全部应用的Actuator模块以及日志输出作统一的配置管理。因此,咱们但愿能够将Actuator模块的配置放在独立的配置文件actuator.properties
文件中,而对于日志输出的配置放在独立的配置文件log.properties
文件中。经过拆分这两类配置内容,但愿能够作到配置的共享加载与统一管理。app
这时候,咱们只须要作如下两步,就能够实现这个需求:学习
第一步:在Nacos中建立Data ID=actuator.properties
,Group=DEFAULT_GROUP
和Data ID=log.properties
,Group=DEFAULT_GROUP
的配置内容。ui
第二步:在Spring Cloud应用中经过使用spring.cloud.nacos.config.ext-config
参数来配置要加载的这两个配置内容,好比:spa
spring.cloud.nacos.config.ext-config[0].data-id=actuator.properties spring.cloud.nacos.config.ext-config[0].group=DEFAULT_GROUP spring.cloud.nacos.config.ext-config[0].refresh=true spring.cloud.nacos.config.ext-config[1].data-id=log.properties spring.cloud.nacos.config.ext-config[1].group=DEFAULT_GROUP spring.cloud.nacos.config.ext-config[1].refresh=true
能够看到,spring.cloud.nacos.config.ext-config
配置是一个数组List类型。每一个配置中包含三个参数:data-id
、group
,refresh
;前两个不作赘述,与Nacos中建立的配置相互对应,refresh
参数控制这个配置文件中的内容时候支持自动刷新,默认状况下,只有默认加载的配置才会自动刷新,对于这些扩展的配置加载内容须要配置该设置时候才会实现自动刷新。日志
经过上面加载多个配置的实现,实际上咱们已经能够实现不一样应用共享配置了。可是Nacos中还提供了另一个便捷的配置方式,好比下面的设置与上面使用的配置内容是等价的:
spring.cloud.nacos.config.shared-dataids=actuator.properties,log.properties spring.cloud.nacos.config.refreshable-dataids=actuator.properties,log.properties
spring.cloud.nacos.config.shared-dataids
参数用来配置多个共享配置的Data Id
,多个的时候用用逗号分隔spring.cloud.nacos.config.refreshable-dataids
参数用来定义哪些共享配置的Data Id
在配置变化时,应用中能够动态刷新,多个Data Id
之间用逗号隔开。若是没有明确配置,默认状况下全部共享配置都不支持动态刷新当咱们加载多个配置的时候,若是存在相同的key时,咱们须要深刻了解配置加载的优先级关系。
在使用Nacos配置的时候,主要有如下三类配置:
spring.cloud.nacos.config.shared-dataids
定义的共享配置spring.cloud.nacos.config.ext-config[n]
定义的加载配置spring.cloud.nacos.config.prefix
、spring.cloud.nacos.config.file-extension
、spring.cloud.nacos.config.group
这几个参数)拼接出来的配置要弄清楚这几个配置加载的顺序,咱们从日志中也能够很清晰的看到,咱们能够作一个简单的实验:
spring.cloud.nacos.config.ext-config[0].data-id=actuator.properties spring.cloud.nacos.config.ext-config[0].group=DEFAULT_GROUP spring.cloud.nacos.config.ext-config[0].refresh=true spring.cloud.nacos.config.shared-dataids=log.properties spring.cloud.nacos.config.refreshable-dataids=log.properties
根据上面的配置,应用分别会去加载三类不一样的配置文件,启动应用的时候,将会在日志中看到以下输出:
2019-02-08 21:23:02.665 INFO 63804 --- [main] o.s.c.a.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: 'log.properties', group: 'DEFAULT_GROUP' 2019-02-08 21:23:02.671 INFO 63804 --- [main] o.s.c.a.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: 'actuator.properties', group: 'DEFAULT_GROUP' 2019-02-08 21:23:02.677 INFO 63804 --- [main] o.s.c.a.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: 'alibaba-nacos-config-client.properties', group: 'DEFAULT_GROUP'
后面加载的配置会覆盖以前加载的配置,因此优先级关系是:A < B < C
本文示例读者能够经过查看下面仓库的中的alibaba-nacos-config-client
项目:
若是您对这些感兴趣,欢迎star、follow、收藏、转发给予支持!