SpringCloud 配置管理:Nacos
统一配置管理
将配置交给 Nacos 管理的步骤:
- 在 Nacos 中添加配置文件。
- 在微服务中引入 nacos 的 config 依赖。
- 在微服务中添加 bootstrap.yml,配置 nacos 地址、当前环境、服务名称、文件后缀名。这些决定了程序启动时去 nacos 读取哪个文件。
具体操作:
1)在 Nacos 中添加配置信息
2)在弹出表单中填写配置信息
3)配置获取的步骤如下
4)引入 Nacos 的配置管理客户端依赖
<!-- nacos配置管理依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
5)在 resource 目录添加一个 bootstrap.yml 文件,这个文件是引导文件,优先级高于 application.yml
spring:
application:
name: userservice # 服务名称
profiles:
active: dev # 开发环境,这里是dev
cloud:
nacos:
server-addr: localhost:8848 # Nacos地址
config:
file-extension: yaml # 文件后缀名
6)测试:将(Nacos 配置内容中的)pattern.dateformat 这个属性注入到 UserController 中
@RestController
@RequestMapping("/user")
public class UserController {
// 注入nacos中的配置属性
@Value("${pattern.dateformat}")
private String dateformat;
// 编写controller,通过日期格式化器来格式化现在时间并返回
@GetMapping("now")
public String now(){
return LocalDate.now().format(
DateTimeFormatter.ofPattern(dateformat, Locale.CHINA)
);
}
// ... 略
}
配置热更新
Nacos 配置更改后,微服务可以实现热更新,两种方式如下:
- 通过 @Value 注解注入,结合 @RefreshScope 来刷新。
- 通过 @ConfigurationProperties 注入,自动刷新。
注意事项:
- 不是所有的配置都适合放到配置中心,否则维护起来比较麻烦。
- 建议将一些关键参数,需要运行时调整的参数放到 nacos 配置中心,一般都是自定义配置。
方式一:在 @Value 注入的变量所在类上添加注解 @RefreshScope
方式二:使用 @ConfigurationProperties 注解
@Component
@Data
@ConfigurationProperties(prefix="pattern")
public class PatternProperties {
private String dateformat;
}
配置共享
多环境配置共享
微服务会从 nacos 读取的配置文件:
[服务名]-[spring.profile.active].yaml
:环境配置(例如 userservice-dev.yaml)。[服务名].yaml
:默认配置,多环境共享(例如 userservice.yaml)。- 无论 profile 如何变化,
[服务名].yaml
这个文件一定会加载,因此多环境共享配置可以写入这个文件。
配置加载优先级:
多服务配置共享
不同服务之间共享配置文件的两种方式:
- 通过 shared-configs 指定
- 通过 extension-configs 指定
方式一:通过 shared-configs 指定
spring:
application:
name: userservice # 服务名称
profiles:
active: dev # 环境
cloud:
nacos:
server-addr: localhost:8848 # Nacos 地址
config:
file-extension: yaml # 文件后缀名
shared-configs: # 多微服务间共享的配置列表
- dataId: common.yaml # 要共享的配置文件 id
方式二:通过 extension-configs 指定
spring:
application:
name: userservice # 服务名称
profiles:
active: dev # 环境
cloud:
nacos:
server-addr: localhost:8848 # Nacos 地址
config:
file-extension: yaml # 文件后缀名
extends-configs: # 多微服务间共享的配置列表
- dataId: extend.yaml # 要共享的配置文件 id
多种配置的优先级:
分类:
Java 微服务框架
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
2021-06-07 SQL(DCL、DDL、DML、DQL)
2021-06-07 MySQL 基础、安装、配置