假设现在有这样的一个需求:我们想要对所有应用的Actuator模块以及日志输出做统一的配置管理。所以,我们希望可以将Actuator模块的配置放在独立的配置文件
actuator.properties文件中,而对于日志输出的配置放在独立的配置文件log.properties文件中。通过拆分这两类配置内容,希望可以做到配置的共享加载与统一管理。
加载多个配置
nacos提供了两种方式加载多个配置,分别是spring.cloud.nacos.config.extension-configs和spring.cloud.nacos.config.shared-configs。
使用extension-configs
第一步:在Nacos中新建配置


第二步:在Spring Cloud应用中通过使用spring.cloud.nacos.config.extension-configs参数来配置要加载的这两个配置内容
spring.application.name=alibaba-nacos-config-clientserver.port=8002spring.cloud.nacos.config.server-addr=127.0.0.1:8848spring.cloud.nacos.config.extension-configs[0].data-id=actuator.propertiesspring.cloud.nacos.config.extension-configs[0].group=DEFAULT_GROUPspring.cloud.nacos.config.extension-configs[0].refresh=truespring.cloud.nacos.config.extension-configs[1].data-id=log.propertiesspring.cloud.nacos.config.extension-configs[1].group=DEFAULT_GROUPspring.cloud.nacos.config.extension-configs[1].refresh=true
spring.cloud.nacos.config.extension-configs配置是一个数组List类型。每个配置中包含三个参数:data-id、group,refresh;前两个不做赘述,与Nacos中创建的配置相互对应,refresh参数控制这个配置文件中的内容时候支持自动刷新,默认情况下,只有默认加载的配置才会自动刷新,对于这些扩展的配置加载内容需要配置refresh才会实现自动刷新。
第三步:修改EchoController
@Slf4j@RefreshScope@RestControllerstatic class EchoController {@Value("${title.en}")private String titleEn;@Value("${log}")private Boolean log;@GetMapping("echo")public String echo() {return titleEn + ", log = " + log;}}
第四步:curl检查配置读取和自动刷新
wujiawei@wujiaweideMacBook-Pro ~ % curl http://localhost:8002/echolog.properties, log = falsewujiawei@wujiaweideMacBook-Pro ~ % curl http://localhost:8002/echolog.properties, log = true
使用shared-configs
程序员DD教程中使用的
shared-dataids和refreshable-dataids,这两个配置在新版本中已经失效,官方建议使用shared-configs进行代替


第一步:修改bootstrap.properties
spring.application.name=alibaba-nacos-config-clientserver.port=8002spring.cloud.nacos.config.server-addr=127.0.0.1:8848spring.cloud.nacos.config.shared-configs[0].data-id=actuator.propertiesspring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUPspring.cloud.nacos.config.shared-configs[0].refresh=truespring.cloud.nacos.config.shared-configs[1].data-id=log.propertiesspring.cloud.nacos.config.shared-configs[1].group=DEFAULT_GROUPspring.cloud.nacos.config.shared-configs[1].refresh=true
第二步:curl检查配置读取和自动刷新
wujiawei@wujiaweideMacBook-Pro ~ % curl http://localhost:8002/echolog.properties, log = falsewujiawei@wujiaweideMacBook-Pro ~ % curl http://localhost:8002/echolog.properties, log = true
