假设现在有这样的一个需求:我们想要对所有应用的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-client
server.port=8002
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.extension-configs[0].data-id=actuator.properties
spring.cloud.nacos.config.extension-configs[0].group=DEFAULT_GROUP
spring.cloud.nacos.config.extension-configs[0].refresh=true
spring.cloud.nacos.config.extension-configs[1].data-id=log.properties
spring.cloud.nacos.config.extension-configs[1].group=DEFAULT_GROUP
spring.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
@RestController
static 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/echo
log.properties, log = false
wujiawei@wujiaweideMacBook-Pro ~ % curl http://localhost:8002/echo
log.properties, log = true
使用shared-configs
程序员DD教程中使用的
shared-dataids
和refreshable-dataids
,这两个配置在新版本中已经失效,官方建议使用shared-configs
进行代替
第一步:修改bootstrap.properties
spring.application.name=alibaba-nacos-config-client
server.port=8002
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.shared-configs[0].data-id=actuator.properties
spring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUP
spring.cloud.nacos.config.shared-configs[0].refresh=true
spring.cloud.nacos.config.shared-configs[1].data-id=log.properties
spring.cloud.nacos.config.shared-configs[1].group=DEFAULT_GROUP
spring.cloud.nacos.config.shared-configs[1].refresh=true
第二步:curl检查配置读取和自动刷新
wujiawei@wujiaweideMacBook-Pro ~ % curl http://localhost:8002/echo
log.properties, log = false
wujiawei@wujiaweideMacBook-Pro ~ % curl http://localhost:8002/echo
log.properties, log = true