服务注册中心
微服务配置文件的问题
- 微服务项目太多 配置文件太多不易修改
- 服务修改配置文件后必须重启才能生效
- 无法根据配置文件切换运行环境
配置中心解决的问题:
- 无需重启服务 修改配置文件后直接生效
- 统一进行配置文件管理
- 提供统一接口 服务根据接口拉取配置文件
搭建配置中心
运行nacos server没有什么好说的
导入spring cloud和spring cloud alibaba的配置文件
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2021.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2020.0.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
导入nacos config包
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
之前写bootstrap配置文件无法生效 原因是SpringBoot 2.4之后,为了适应云原生,对基础配置文件使用方式做了调整。
所以还得导入
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
在nacos server中创建配置文件
点击右上角+
后缀为yaml dataID必须和bootstartp.yml中的spring.application.name一致
配置nacos config
首先创建bootstrap配置文件 并配置application name nacos server地址 还有配置文件后缀
spring:
application:
name: nacos-config-demo
cloud:
nacos:
config:
# 配置文件后缀
file-extension: YAML
# 服务器ip地址和端口号
server-addr: 10.0.4.3:8848
server:
port: 7979
最后在controller中注入配置文件的值 查看配置文件是否生效
@RestController
@RefreshScope
public class ConfigTestController {
@Value("${name}")
private String name;
@GetMapping("/myName")
public String sayMyName() {
return "my name is " + name;
}
}
修改配置文件后 将会动态更新到服务中
多环境配置文件设置
根据文档
$在 Nacos Spring Cloud 中,dataId 的完整格式如下: ${prefix}-${spring.profiles.active}.${file-extension} prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。 spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension} file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
根据文档所示假定application.name = nacos-config-demo
完整的DataId为 nacos-config-demo-spring.profiles.active.后缀 一定要添加后缀 之前没有添加后缀一直报错
如我的配置文件如下
spring:
application:
name: nacos-config-demo
cloud:
nacos:
config:
# 配置文件后缀
file-extension: YAML
# 服务器ip地址和端口号
server-addr: 10.0.4.3:8848
profiles:
active: pro
# 一定要写.yaml 要不找不到文件 我真日了
server:
port: 7979
那么在nacos server中添加的配置为 nacos-config-demo-pro.yaml才能读取
同一微服务 相同项设置
直接创建以application.name为data id的文件即可
如 我的application.name = nacos-config-demo 只要在nacos里创建一个名为nacos-config-demo的配置文件即可
然后运行测试
不同微服务 共享同一配置文件
方法一:
使用shared-configs
需要配置三个值 分别是dataId group refresh
dataId为配置中心配置文件的dataId group如果为默认可以不配置 refresh为自动刷新 默认false
shared-configs[0]:
data-id: reids-config
refresh: true
方法二:
使用extension-configs 配置基本相同
extension-configs[0]:
data-id: reids-config
refresh: true
extension-configs 比shared-configs优先级高
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律