spring cloud config通过config server与config client实现集中化配置管理:server从git等后端拉取配置并提供rest接口,client在启动时通过bootstrap.yml优先加载远程配置,支持环境隔离、版本控制和动态刷新。

在 Spring Boot 中集成 Spring Cloud Config 实现配置中心,核心是把应用的配置从代码中抽离出来,统一由 Config Server 管理,客户端(即你的 Spring Boot 应用)启动时从 Server 拉取配置。整个过程不复杂,但几个关键点必须对齐,否则会连不上或读不到配置。
搭建 Config Server(服务端)
Config Server 是一个独立的 Spring Boot 应用,负责提供配置内容。它支持从 Git、本地文件系统、Vault 等后端读取配置,默认推荐 Git。
- 添加依赖:spring-cloud-config-server 和 spring-boot-starter-web
- 主类加 @EnableConfigServer 注解启用服务端功能
- 在 application.yml 中指定配置源,例如 Git 仓库地址、搜索路径、分支名:
spring:
cloud:
config:
server:
git:
uri: https://github.com/yourname/config-repo
search-paths: '{application}'
default-label: main
启动后,访问 http://localhost:8888/{app-name}/{profile}(如 /user-service/dev)就能看到 JSON 格式的配置内容。
客户端接入 Config Client
你的业务 Spring Boot 应用作为 Config Client,需要提前知道 Config Server 地址,并在启动早期加载远程配置。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
- 添加依赖:spring-cloud-starter-config(注意:不是 config-server)
- 在 bootstrap.yml(不是 application.yml)中配置连接信息:
spring:
application:
name: user-service # 必须与 Git 中配置文件名一致(如 user-service-dev.yml)
cloud:
config:
uri: http://localhost:8888
profile: dev
label: main
重点:必须用 bootstrap.yml,因为 Config Client 需在 Spring Context 初始化前就拉取配置,而 bootstrap.yml 优先级高于 application.yml。
配置文件命名与加载规则
Config Server 根据客户端传来的 application name + profile + label 匹配 Git 中的文件名。常见命名格式:
- {application}.yml 或 {application}-{profile}.yml(如 user-service-dev.yml)
- 也可用目录结构,配合 search-paths 定位,比如把所有 dev 配置放在 /config/dev/ 下
- 如果没找到精确匹配,会 fallback 到 {application}.yml 或 application.yml
动态刷新配置(可选但实用)
默认配置只在启动时加载一次。如需运行时更新,需手动触发刷新:
- 客户端加上 @RefreshScope 注解在需要动态更新的 Bean 上(如 @RestController 或 @Service 类)
- 暴露 actuator 的 /actuator/refresh 端点(需添加 spring-boot-starter-actuator 并配置 management.endpoints.web.exposure.include=refresh)
- 修改 Git 配置并 push 后,向客户端发 POST 请求:curl -X POST http://localhost:8080/actuator/refresh
响应返回更新的配置项 key 列表,说明刷新成功。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










