1、前言
在一个大的项目中,可能存在多个微服务工程,而这些微服务可能需要某些相同的配置,比如Redis的地址,此时在每个微服务的配置文件中都配置这个Redis地址也是可行的,但是比较麻烦,维护难度较大,也容易出错。此时,我们需要一个全局的配置文件,把公共的配置,比如Redis的地址保存在这个公共的配置文件中,所有微服务项目都来加载该全局配置文件。
2、第一种方式(扩展配置)
bootstrap.properties
spring.application.name=express
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.profiles.active=dev
spring.cloud.nacos.config.file-extension=properties
spring.cloud.nacos.config.namespace=${spring.profiles.active}
spring.cloud.nacos.config.group=wms
# 注意 从0开始
spring.cloud.nacos.config.extension-configs[0].data-id=redis.properties==
# # 缺省默认 DEFAULT_GROUP
spring.cloud.nacos.config.extension-configs[0].group=WMS_GLOBAL_GROUP
# 是否动态刷新,缺省默认 false
spring.cloud.nacos.config.extension-configs[0].refresh=true
多个 Data Id 同时配置时,他的优先级关系是
spring.cloud.nacos.config.extension-configs[n].data-id
其中 n 的值越大,优先级越高。
spring.cloud.nacos.config.extension-configs[n].data-id
的值必须带文件扩展名,文件扩展名既可支持 properties,又可以支持 yaml/yml。 此时spring.cloud.nacos.config.file-extension
的配置对自定义扩展配置的 Data Id 文件扩展名没有影响。
Nacos新建配置:
2、第二种方式(共享DataId)
bootstrap.properties
spring.application.name=express
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.profiles.active=dev
spring.cloud.nacos.config.file-extension=properties
spring.cloud.nacos.config.namespace=${spring.profiles.active}
spring.cloud.nacos.config.group=wms
spring.cloud.nacos.config.shared-configs[0].data-id=redis.properties
# 缺省默认 DEFAULT_GROUP
spring.cloud.nacos.config.shared-configs[0].group=WMS_GLOBAL_GROUP
# 是否动态刷新,缺省默认 false
spring.cloud.nacos.config.shared-configs[0].refresh=true
3、配置的优先级
Spring Cloud Alibaba Nacos Config 目前提供了三种配置能力从 Nacos 拉取相关的配置。
- A: 通过
spring.cloud.nacos.config.shared-configs[n].data-id
支持多个共享 Data Id 的配置- B: 通过
spring.cloud.nacos.config.extension-configs[n].data-id
的方式支持多个扩展 Data Id 的配置- C: 通过内部相关规则(应用名、应用名+ Profile )自动生成相关的 Data Id 配置
当三种方式共同使用时,他们的一个优先级关系是:A < B < C