多配置文件读取

在实际的开发工作中,存在多个微服务共用一些配置的情况,如某几个服务共用一份 MySQLRedisElastic Search 中间件的连接配置,或者某几个服务共享同一份业务规则的配置。在这种情况下就可以将部分配置分离,在 Nacos 控制台中创建多个配置文件,不需要在每个微服务中单独管理通用配置。在之前的编码演示中都只创建了一个配置文件,接下来笔者将演示如何读取 Nacos 配置中心里的多个配置文件。

extension-configs配置项简介

Nacos 配置中心可以通过指定不同的 Data ID 读取多个配置文件,每个 Data ID 对应一个配置文件,可以通过配置中心的 API 读取对应的配置内容。在实际编码时,在 bootstrap 配置文件中增加 extension-configs 配置项对 Nacos 配置中心的多个配置文件进行配置和读取。extension-configs 是一个扩展配置功能,允许用户在 Nacos 配置中心里存储额外的配置信息,并且可以通过插件的形式扩展配置的加载和解析,这样能够更方便地管理应用程序的配置信息。在实际编码时增加的代码如下。

properties 格式配置文件的写法如下:

spring.cloud.nacos.config.extension-configs[0].data-id=xxx-config.properties
spring.cloud.nacos.config.extension-configs[0].group=xx_GROUP
spring.cloud.nacos.config.extension-configs[0].refresh=true

spring.cloud.nacos.config.extension-configs[1].data-id=xxx--xxx-config.properties
spring.cloud.nacos.config.extension-configs[1].group=xx_GROUP

spring.cloud.nacos.config.extension-configs[1].refresh=true

yml 格式配置文件的写法如下:

extension-configs:
- dataId: xxx-config.yml
  group: xx_GROUP
  refresh: true
- dataId: xxx-xxx-config.yml
  group: xx_GROUP
  refresh: true

extension-configs 中配置的是一个链表的结构,每个节点都有 dataIdgrouprefresh 三个属性,分别代表读取的配置文件名称、分组、是否需要动态刷新。

在配置中心创建多个配置文件

打开浏览器并进入 Nacos 控制台页面,新建 switch-config.properties 配置,如图 6-36 所示。

image 2025 04 16 14 42 43 425
Figure 1. 图6-36 在 Nacos 控制台中新建 switch-config.properties 配置

在 “新建配置” 页面中,笔者指定了 Data IDswitch-config.propertiesGroup 为自定义分组 COMMON_GROUP、配置格式为 Properties。在 “配置内容” 文本框中,笔者将活动开关变量从 newbee-cloud-config-service-dev.properties 中分离出来并放入该配置文件。之后创建 redis-config.properties 配置,由于只是功能演示,因此该配置中并未添加任何内容。

最终的配置列表如图 6-37 所示。

image 2025 04 16 14 43 25 088
Figure 2. 图6-37 配置列表

在代码中增加多配置读取的配置及功能验证

打开项目中的 bootstrap.application 文件,新增如下代码:

spring.cloud.nacos.config.extension-configs[0].dataId=switch-config.properties
spring.cloud.nacos.config.extension-configs[0].group=COMMON_GROUP
spring.cloud.nacos.config.extension-configs[0].refresh=true

spring.cloud.nacos.config.extension-configs[1].dataId=redis-config.properties
spring.cloud.nacos.config.extension-configs[1].group=COMMON_GROUP
spring.cloud.nacos.config.extension-configs[1].refresh=true

本项目在启动后除读取 newbee-cloud-config-service-dev.properties 配置外,还会额外读取 switch-config.propertiesredis-config.properties 配置。

一切设置妥当之后,就可以启动应用程序进行功能验证了。

启动 nacos-config-demo 项目(需保证 Nacos Server 和 MySQL Server 已经正常运行)。若启动过程中没有报错,则启动日志如下:

image 2025 04 16 14 46 33 882

可以看到在项目启动过程中,会拉取 Nacos 配置中心的多个配置文件。

接下来,在 Nacos 控制台中修改 switch-config.properties 中的配置内容。修改后也能够正常监听,日志如下:

image 2025 04 16 14 47 14 593

到这里,功能验证的结果就出来了,对 Nacos 配置中心里的多配置文件读取功能编码完成。