一、项目基础配置搭建

1.创建配置中心客户端工程

引入nacos依赖

<dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-com.nacos.config</artifactId>
</dependency>

2.创建两个配置文件

bootstrap.yml 和 application.yml

SpringBoot工程中 bootstrap.yml 文件加载优先级高于 application.yml 。nacos也是先通过bootstrap.yml 从配置中心获取配置后,再结合application.yml中的配置项目进行启动项目。

1)bootstrap.yml

server:
  port: 3377
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848 #nacos 服务注册中心地址
      config:
        server-addr: 127.0.0.1:8848 #nacos 服务配置中心地址
        file-extension: yaml #指定读取的为yaml格式配置
  1. application.yml
spring:
      profiles:
        active: dev # 表示开发环境

服务端配置 Data Id :
{spring.application.name}-{spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

即 nacos 服务端配置的Data Id 的值为:nacos-config-client-dev.yaml

3.编写主启动类

添加注解 @EnableDiscoveryClient启动服务注册发现功能。

package com.nacos;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class NacosConfigClientMain {
    public static void main(String[] args) {
        SpringApplication.run(NacosConfigClientMain.class, args);
    }
}

4.编写业务类获取配置

创建controller类,获取配置列表中的信息,添加注解@RefreshScope实现动态刷新配置功能。

package com.nacos.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RefreshScope //支持Nacos的动态刷新功能。
public class ConfigClientController {

    @Value("${config.info}")
    public String info;

    @GetMapping("/get/configinfo")
    public String getPayment() {
        return "name:" + info;
    }
}

5.nacos服务端配置

在nacos配置列表菜单下的 public 命名空间下新增配置

请简述使用Nacos环境隔离Namespace的注意事项_bootstrap


新建配置(+)

请简述使用Nacos环境隔离Namespace的注意事项_spring boot_02

6.启动客户端,测试一下

访问 ,效果如下,成功读取到了我们的配置

请简述使用Nacos环境隔离Namespace的注意事项_spring boot_03


7.修改配置信息,实现动态刷新

请简述使用Nacos环境隔离Namespace的注意事项_spring_04


再次访问 http://localhost:3377/get/configinfo ,可以看到已经读取得到最新的配置信息!

请简述使用Nacos环境隔离Namespace的注意事项_spring_05

二、根据后缀名读取不同环境的配置

1.修改配置文件

修改application.yml文件 spring.profiles.active 值为 test

请简述使用Nacos环境隔离Namespace的注意事项_bootstrap_06

2.新建配置信息

在nacos新建测试环境的配置信息

请简述使用Nacos环境隔离Namespace的注意事项_spring_07

3.重启客户端

配置好后,重启客户端,然后访问 http://localhost:3377/get/configinfo

请简述使用Nacos环境隔离Namespace的注意事项_java_08


说明:例如某服务名为:order-service,注册到测试环境为 order-service,本地启动该服务名为

local-order-service,这样对外暴露的服务名为 order-service,而本地可以调用测试环境的服务,测

试却不能调本地的服务,因为服务名称不同

三、根据分组读取不同环境的配置

1.修改bootstrap.yml,指定分组

添加spring.cloud.nacos.config.group 配置项,指定其分组为PROD_GROUP

请简述使用Nacos环境隔离Namespace的注意事项_spring cloud_09

2.新增nacos服务端配置

请简述使用Nacos环境隔离Namespace的注意事项_spring boot_10

3.重启客户端

访问 http://localhost:3377/get/configinfo

请简述使用Nacos环境隔离Namespace的注意事项_bootstrap_11

四、根据命名空间读取不同环境的配置

1.nacos服务端新建命名空间

请简述使用Nacos环境隔离Namespace的注意事项_spring cloud_12


请简述使用Nacos环境隔离Namespace的注意事项_spring cloud_13

配置管理里面可以看到刚才创建的命名空间。

请简述使用Nacos环境隔离Namespace的注意事项_spring boot_14

2.在测试环境下新建配置,分组为 TEST_GROUP

请简述使用Nacos环境隔离Namespace的注意事项_bootstrap_15

请简述使用Nacos环境隔离Namespace的注意事项_spring boot_16

3.修改bootstrap.yml,添加namespace

在bootstrap.yml文件中添加 spring.cloud.nacos.config.namespace 键,值为新建配置时自动生成的命名空间id.

请简述使用Nacos环境隔离Namespace的注意事项_java_17

4.重启客户端

请简述使用Nacos环境隔离Namespace的注意事项_java_18

五、说明

例如某服务名为:order-service,注册到测试环境为 order-service,本地启动该服务名为 local-order-service,本地可以调用测试环境的服务,测试却不能调本地的服务,因为服务名称不同。这样就实现了不同环境服务之间的隔离。