【Spring Cloud Alibaba】007-Nacos 配置*
文章目录
一、概述
1、概述
参考:https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config
Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使
用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。
2、对比 spring cloud config
- spring cloud config 大部分场景结合 git 使用,动态变更还需要依赖 Spring Cloud Bus 消息总线来通过所有的客户端变化;
- spring cloud config不提供可视化界面;
- nacos config 使用长轮询更新配置,一旦配置有变动后,通知 Provider 的过程非常的迅速, 从速度上秒杀 spring cloud 原来的 config 几条街。
二、基本使用
1、在管理界面新建配置
参考:https://nacos.io/zh-cn/docs/concepts.html
Namespace:代表不同环境,如开发、测试、生产环境。
Group:代表某项目,如XX医疗项目、XX电商项目
DataId:每个项目下往往有若干个工程(微服务),每个配置集(DataId)是一个工程(微服务)的主配置文件
2、启动权限
3、 搭建 nacos-config 服务
通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的自动变更
第一步:引入依赖
<!-- spring‐cloud‐starter‐alibaba‐nacos‐config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
第二步:修改 yaml 配置文件
参考文章:https://www.modb.pro/db/390266
spring:
application:
name: order-service
cloud:
nacos:
server-addr: localhost:8848
discovery:
username: nacos
password: nacos
namespace: public
config:
group: DEFAULT_GROUP
server-addr: localhost:8848
username: nacos
password: nacos、
# 新版命名空间不能使用 public
namespace: 74065c76-2e4e-44ba-935e-a6f88f44f83c
config:
import:
- optional:nacos:test.yaml
第三步:修改启动类
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(OrderApplication.class, args);
String name = context.getEnvironment().getProperty("user.name");
String age = context.getEnvironment().getProperty("user.age");
System.out.println("name is " + name + ", age is " + age);
}
第四步:运行测试
三、动态获取最新配置
@Value 注解可以获取到配置中心的值,但是无法动态感知修改后的值,需要利用 @RefreshScope
注解!
@RestController
@RefreshScope
public class TestController {
@Value("${user.nickname}")
private String nickname;
@GetMapping("/user")
public String hello() {
return nickname;
}
}