新建模块 :alibaba-nacos-config-client-3377
修改 POM
<dependencies>
<!--nacos-config-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--nacos-discovery-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--web + actuator-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--一般基础配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
编写 YML
bootstrap.yml
server:
port: 3377
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #服务注册中心地址
config:
server-addr: localhost:8848 #配置中心地址
file-extension: yaml #指定yaml格式的配置
application.yml
spring:
profiles:
active: dev
编写主启动类
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConfigClientMain3377 {
public static void main(String[] args) {
SpringApplication.run(NacosConfigClientMain3377.class, args);
}
}
业务类
Controller :ConfigClientController
@RestController
@RefreshScope
public class ConfigClientController {
@Value("${config.info}")
private String configInfo;
@GetMapping("/config/info")
public String getConfigInfo() {
return configInfo;
}
}
Nacos中的匹配规则
官网地址 :https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html

通过上面的理论可以得出本项目的 Data-Id 如下:

添加配置步骤 :
nacos-config-client-dev.yaml
config:
info: “{Config-Center:Nacos, Profiles:dev, Version:1.1.1}”
测试
启动 Nacos 控制台
启动 3377

访问 :http://localhost:3377/config/info

修改配置,体验动态刷新


实际开发中,通常─个系统会准备:
- dev开发环境
- test测试环境
- prod生产环境。
如何保证指定环境启动时服务能正确读取到Nacos上相应环境的配置文件呢?
一个大型分布式微服务系统会有很多微服务子项目,每个微服务项目又都会有相应的开发环境、测试环境、预发环境、正式环境…那怎么对这些微服务配置进行管理呢?
一个配置文件可以通过以下三个属性来定位
Namespace+Group+Data ID

这三个属性是什么
- 类似Java里面的package名和类名
- 最外层的 namespace 是可以用于区分部署环境的
- Group 和 DatalID 逻辑上区分两个目标对象。
三者关系

默认情况:
- Namespace = public
- Group = DEFAULT_GROUP
- Cluster = DEFAULT
- Nacos默认的命名空间是 public,Namespace主要用来实现隔离。
- 比方说我们现在有三个环境:开发、测试、生产环境,我们就可以创建三个 Namespace,不同的Namespace 之间是隔离的。
- Group默认是 DEFAULT_GROUP,Group 可以把不同的微服务划分到同一个分组里面去
Service 就是微服务;一个 Service 可以包含多个 Cluster (集群)
- Nacos 默认 Cluster 是DEFAULT,Cluster 是对指定微服务的一个虚拟划分。比方说为了容灾,将 Service 微服务分别部署在了杭州机房和广州机房,这时就可以给杭州机房的 Service 微服务起一个集群名称(Hz) ,给广州机房的 Service 微服务起一个集群名称(GZ),还可以尽量让同一个机房的微服务互相调用,以提升性能。
- 最后是 Instance,就是微服务的实例。
新建 dev 环境的配置文件

新建 test 环境的配置文件

修改使用的配置文件

重启项目,测试

新建一个 DEV 分组

新建一个 TEST 分组

修改 application.yml

修改 bootstrap.yml

测试

修改分组

测试

新建 DEV 、TEST 两个命名空间




在 DEV、TEST 两个命名空间中添加相应配置文件


修改 bootstrap.yml

测试

切换命名空间

测试
