Spring Cloud Config 通过服务端+客户端两级结构实现配置集中化管理,服务端基于Git等存储提供REST接口,客户端通过bootstrap.yml优先加载配置并支持动态刷新。

Spring Cloud Config 通过“服务端 + 客户端”两级结构实现配置的集中化、环境隔离与动态更新,核心是把配置从各微服务中抽离出来,统一存放在 Git(推荐)、SVN 或本地文件系统中。
Config Server:搭建配置服务端
它是一个独立的 Spring Boot 应用,负责对接后端存储并提供 REST 接口供客户端拉取配置。
- 添加依赖:
spring-cloud-config-server和spring-boot-starter-web,别忘了spring-boot-starter-actuator(用于刷新等端点) - 主类加
@EnableConfigServer注解启用服务端能力 - 在
application.yml中配置 Git 仓库地址和搜索路径,例如:spring.cloud.config.server.git.uri=https://github.com/your/config-repospring.cloud.config.server.git.searchPaths={application}(按服务名自动匹配子目录) - 启动后,可通过
GET /{application}/{profile}/{label}直接访问配置,比如http://localhost:8888/order-service/prod/master
Config Client:让微服务接入配置中心
每个微服务作为客户端,启动时主动向 Config Server 请求自己的配置,不需改业务代码。
- 引入
spring-cloud-starter-config(注意不是 server 依赖) - 必须使用
bootstrap.yml(不是 application.yml),因为它的加载优先级更高,确保配置早于 Spring 上下文初始化 - 关键配置项包括:
spring.application.name(决定配置文件名,如order-service)spring.profiles.active(决定环境,如prod)spring.cloud.config.uri(指向 Config Server 地址) - 配置文件命名规则为:
{application}-{profile}.yml,例如order-service-prod.yml
多环境与版本管理
利用 Git 的分支和标签天然支持环境隔离与历史追溯。
立即学习“Java免费学习笔记(深入)”;
- 不同环境用不同 profile:dev/test/prod 对应
app-dev.yml、app-test.yml、app-prod.yml - 可指定
label字段切换分支或 tag,如spring.cloud.config.label=release-v2.1 - 公共配置写在
application.yml(不带 service 名),会被所有服务继承 - 敏感配置可用
{cipher}加密,配合 Config Server 的密钥解密
动态刷新配置(不重启生效)
修改 Git 配置后,服务需要感知变更并重新加载,分两步走:
- 在需要响应配置变化的 Bean 类上加
@RefreshScope注解 - 调用客户端的
POST /actuator/refresh端点触发单个实例刷新 - 如需全量广播,需集成 Spring Cloud Bus(配合 RabbitMQ/Kafka),一次推送,全部服务自动更新


















