Spring Cloud Alibaba基础教程:Nacos配置的多文件加载与共享配置

对于Naocs作为配置中心的使用,通过之前的几篇博文,我们已经介绍了如何在Nacos中创建配置内容,nacos配合着内容与Spring应用配置之间的对应关系以及实战中多环境下的配置管理方案。
但是,我们实际应用过程中还会经常碰到这样的问题:有时候我们会对应用的配置根据具体作用做一些拆分,存储在不同的配置文件中,除了归类把苦痛的配置之外,要开便于共享配置给不同的应用,对于这样的需求,Nacos也可以很好的支持,下面就来具体介绍一下,当使用Nacos时,我们如何加载多个配置,以及如何共享配置。

如何加载多个配置

通过前面的学习,我们已经知道Spring应用对Nacos中配置内容的对应关系时通过下面三个参数控制的:

  • spring.cloud.nacos.config.prefix
  • spring.cloud.nacos.config.file-extension
  • spring.cloud.nacos.config.group
    默认情况下,和会加载Data ID=${spring.application.name}.properties,Group=DEFAULT_GROUP的配置
    假设现在有一个需求:我们想要对所有的应用的Actuator模块以及日志输出做统一的配置管理。所以,我们希望可以将Actuator模块的配置放在对立的配置文件actutor.properties文件中,而对于日志输出的配置放在独立的配置文件log.preperties文件中。通过拆分配置内容,希望可以做到配置的共享加载与统一管理。

第一步:在nacos 中创建Data ID =actuator.properties,Group=DEFAULT_GROUP 和
Data ID=log.properties,Group=DEFAULT_GROP的配置内容。

Spring Cloud Alibaba基础教程:Nacos配置的多文件加载与共享配置_第1张图片

第二步:在Spring Cloud 应用中通过spring.cloud.nacos.config.ext-config参数来配置要加载的这个两个配置内容,比如

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

refresh 参数控制这个配置文件的内容支持自动刷新,默认情况下只有默认加载的配置才会自动刷新,对于这些扩展的配置加载内容需要配置refresh=true的时候才会实现自动刷新

第三步:启动应用

o.s.c.a.n.c.NacosPropertySourceBuilder   : Loading nacos data, dataId: 'actuator.properties', group: 'DEFAULT_GROUP'
o.s.c.a.n.c.NacosPropertySourceBuilder   : Loading nacos data, dataId: 'log.properties', group: 'DEFAULT_GROUP'
o.s.c.a.n.c.NacosPropertySourceBuilder   : Loading nacos data, dataId: 'nacos-config-client.properties', group: 'DEFAULT_GROUP'

共享配置

当我们加载多个配置的时候,入伙存在相同的key 时,我们需要深入了解配置加载的优先级关系。
在使用Nacos配置的时候,主要有以下三类配置

  • A:通过spring.cloud.nacos.config.shared-dataids定义的共享配置
  • B:通过sporing.cloud.nacos.config.ext-config[n]顶柜的加载配置
  • C:通过内部规则(spring.cloud.nacos.config.prefix,
    spring.cloud.nacos.config.file-extension,spring.cloud.nacos.config.group这几个参数)拼接出来的配置
    要弄清除这几个珀尔hi在加载的顺序,我们从日志中也可以很清晰的看到,我们可以定义一个简单的实验:
spring.cloud.nacos.config.namespace=b5ad614d-646a-4dbb-9e3e-46e54f05dba1
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.shared-dataids=log.properties
spring.cloud.nacos.config.refreshable-dataids=log.properties

根据上面的配置,应用分别会去加载三类不同的配置文件,启动应用的时候,将会在日志看到如下输出:

*o.s.c.a.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: ‘log.properties’, group: ‘DEFAULT_GROUP’
o.s.c.a.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: ‘actuator.properties’, group: ‘DEFAULT_GROUP’
o.s.c.a.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: ‘nacos-config-client.properties’, group: ‘DEFAULT_GROUP’
**b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource {name=‘NACOS’, propertySources= [

NacosPropertySource {name=‘nacos-config-client.properties’}, NacosPropertySource {name=‘actuator.properties’}, NacosPropertySource {name=‘log.properties’}

]}***

注意加大的部分,加载顺序。优先级的关系时 A

你可能感兴趣的:(技术,JAVA)