前言

好久没在上发布文章了,最近在整理公司的架构,需要从新对Nacos中的配置进行归类,之前都是放在default_group这个分组下的,然后将配置这些配置按项目分组,分为duandao、cloud两个分组,也就是在同一个名称空间下,存在default_group、duandao、cloud,保留default_group的目的是为了防止配置从新分组后产生异常好回滚!更改完的配置如下

老default_group下的

Nacos分组后无法获取公共配置_java


新duandao、cloud下的

Nacos分组后无法获取公共配置_java_02


bootstrap配置

cloud:
nacos:
discovery:
server-addr: xxx
namespace: ${spring.profiles.active}
config: # 默认读取当前服务名.${file-extension}
server-addr: xxx
file-extension: yml
shared-configs:
- base-common.yml
namespace: ${spring.profiles.active}

其中base-common.yml,在老的中多个项目是公用的,后来随着项目不断扩展,base-common.yml不能共用了,于是抽出duandao、cloud中各自独立一份base-common.yml。

问题

当我将default_group中的base-common.yml删除后,发现使用duandao、cloud这两个分组的项目缺少base-common.yml中的配置,启动报错,刚开始以为是Nacos的版本升级导致的问题,后来发现是bootstrap配置配置的问题,因为将配置按照group分组后不但需要设置config:group: 分组名,shared-configs也需要变更!

解决方案

cloud:
nacos:
discovery:
server-addr: xxx
namespace: ${spring.profiles.active}
config: # 默认读取当前服务名.${file-extension}
server-addr: xxx
file-extension: yml
group: duandao
shared-configs[0]:
data-id: base-common.yml
group: cloud
namespace: ${spring.profiles.active}

说明:config:group: duandao只是去指定名称空间下的duandao分组下获取当前服务名对应的配置,而shared-configs中的公共配置如果没有指定,那么默认还是回去default_group分组下查找base-common.yml,所以需要更改为shared-configs[0],然后指定data-id和group,千万注意!!!