引入nacos依赖
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-com.nacos.config
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格式配置
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
添加注解 @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);
}
}
创建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;
}
}
在nacos配置列表菜单下的 public 命名空间下新增配置
新建配置(+)
访问 ,效果如下,成功读取到了我们的配置
7.修改配置信息,实现动态刷新
再次访问 http://localhost:3377/get/configinfo ,可以看到已经读取得到最新的配置信息!
修改application.yml文件 spring.profiles.active 值为 test
配置好后,重启客户端,然后访问 http://localhost:3377/get/configinfo
说明:例如某服务名为:order-service,注册到测试环境为 order-service,本地启动该服务名为
local-order-service,这样对外暴露的服务名为 order-service,而本地可以调用测试环境的服务,测
试却不能调本地的服务,因为服务名称不同
添加spring.cloud.nacos.config.group 配置项,指定其分组为PROD_GROUP
访问 http://localhost:3377/get/configinfo
在bootstrap.yml文件中添加 spring.cloud.nacos.config.namespace 键,值为新建配置时自动生成的命名空间id.
例如某服务名为:order-service,注册到测试环境为 order-service,本地启动该服务名为 local-order-service,本地可以调用测试环境的服务,测试却不能调本地的服务,因为服务名称不同。这样就实现了不同环境服务之间的隔离。