Nacos 配置共享分为两种场景:
- 同一个微服务针对不同环境有不同的配置,将这些不同环境配置里面的相同部分,
提取出来共享- 不同微服务相同的公共配置,提取出来共享
1. 同一个微服务不同环境下的配置共享
不同环境的配置共享,通过data-id 的名称后缀实现
1.1 将同一微服务不同环境下的配置提取为公共配置
1.2 创建 dev 环境独有配置
1.3 创建 test 环境独有配置
1.4 修改 bootstrap.yml
spring:
application:
name: service-product
cloud:
nacos:
config:
server-addr: 192.168.88.151:8848 # nacos的服务端地址
file-extension: yaml # 配置文件格式
profiles:
active: test # 环境标识 标记引入的是哪个环境的配置,当前是 test环境,即 service-product-test.yaml
1.5 创建controller
/product/src/main/java/org/example/controller/NacosConfigController.java
package org.example.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Slf4j
@RefreshScope
public class NacosConfigController {
@Value("${config.appName}")
private String appName;
// 商品信息
@RequestMapping("/nacos/config")
public String getConfig() {
return appName;
}
@Value("${config.env}")
private String env;
// 商品信息
@RequestMapping("/nacos/config2")
public String getConfig2() {
return env;
}
}
1.6 重启服务验证
重启product 服务后,访问 http://127.0.0.1:8003/nacos/config2/
出现 test 即表示成功。
2. 不同微服务的配置共享
不同微服务的配置共享,通过在bootstrap.yml 文件中导入指定配置实现。
2.1 创建公用配置
2.2 引入公用配置
修改 bootstrap.yml
spring:
application:
name: service-product
cloud:
nacos:
config:
server-addr: 192.168.88.151:8848 # nacos的服务端地址
file-extension: yaml # 配置文件格式
shared-dataids: all-service-common.yaml # 引入公共配置
refreshable-dataids: all-service-common.yaml # 引入公共配置
profiles:
active: test # 环境标识
2.3 创建controller
product/src/main/java/org/example/controller/NacosConfigController.java
package org.example.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Slf4j
@RefreshScope
public class NacosConfigController {
@Value("${config.appName}")
private String appName;
// 商品信息
@RequestMapping("/nacos/config")
public String getConfig() {
return appName;
}
@Value("${config.env}")
private String env;
// 商品信息
@RequestMapping("/nacos/config2")
public String getConfig2() {
return env;
}
@Value("${config.common.tips}")
private String commonTips;
@RequestMapping("/nacos/config3")
public String getConfig3() {
return commonTips;
}
}
2.4 验证
重启product 服务后,访问 http://127.0.0.1:8003/nacos/config3/
出现 this is all service common yaml
即表示成功。
相关阅读:Nacos 命名空间和配置分组