SpringCloud
yichencv@163.com
# SpringCloud
# Nacos
在bin目录下打开命令提示符 startup.cmd -m standalone
# Nacos配置管理
配置管理-配置列表
# 新建配置
DataID :服务名称-开发环境.yaml 例如:userservice-dev.yaml
# 配置内容
有变化的配置
pattern:
dateformat:yyyy-MM-dd HH:mm:ss
1
2
2
点击发布-发布成功
# 获取配置
# 将配置交给Nacos管理的步骤
在Nacos中添加配置文件 在微服务中引入nacos的config依赖 在微服务中添加bootstrap.yml,配置nacos地址、 当前环境、服务名称、文件后缀名。这些决定了程序 启动时去nacos读取哪个文件
项目启动-读取本地配置文件application.yml-创建spring容器-加载bean
Nacos会先bootstrap.yml文件拿到nacos地址后读取nacos中配置文件再去读取本地配置文件
bootstrap.yml:与nocos地址和配置文件有关的所有信息
引入Nacos的配置管理客户端依赖
<!--nacos配置管理依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
1
2
3
4
5
2
3
4
5
新建bootstrap.yml文件
spring:
application:
name: userservice
profiles:
active: dev #环境
cloud:
nacos:
server-addr: localhost:8848 # nacos地址
config:
file-extension: yaml #文件后缀名
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
usercontroller
@Value("${pattern.dateformat}")
private String dateformat;
@GetMapping("now")
public String now(){
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(dateformat));
}
1
2
3
4
5
6
7
2
3
4
5
6
7
测试 localhost:8086/user/now
# 配置自动刷新
Nacos中的配置文件变更后,微服务无需重启就可以感知。不过需要通过下面两种配置实现
方式一:在@Value注入的变量所在类上添加注解@RefreshScope
方式二:使用 @ConfigurationProperties 注解
# 多环境配置共享
微服务会从nacos读取的配置文件: [服务名]-[spring.profile.active].yaml,环境配置 [服务名].yaml,默认配置,多环境共享 优先级: [服务名]-[环境].yaml >[服务名].yaml >本地配置
微服务启动时会从nacos读取多个配置文件
- 服务名称-开发环境.yaml userservice-dev.yaml
- 服务名称.yaml userservice.yaml
无论profile如何变化userservice.yaml这个文件一定会加载,因此多环境共享配置可以写入这个文件