Spring Cloud Config 配置中心使用指南

 更新时间:2026年03月20日 09:07:56   作者:一个差不多的先生  
Spring Cloud Config 提供了一个集中化的配置管理解决方案,支持多种配置源、动态刷新和多环境配置,通过简单的配置和依赖添加,即可快速搭建配置中心和客户端,感兴趣的可以了解一下

Spring Cloud Config 是一个强大的分布式配置中心,用于集中管理微服务架构中的配置信息。它支持多种配置源,如 Git、本地文件系统、数据库等,并提供配置的动态刷新功能。本文将详细介绍如何搭建和使用 Spring Cloud Config。

一、搭建配置中心(Config Server)

1. 创建 Config Server 项目

使用 Spring Initializr 创建一个 Spring Boot 项目,添加以下依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>

2. 启用 Config Server

在项目的主类上添加 @EnableConfigServer 注解:

@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }
}

3. 配置 Git 仓库

application.ymlapplication.properties 文件中配置 Git 仓库地址:

server:
  port: 8888

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/your-repo/config-repo.git
          search-paths: '{application}'  # 按应用名查找目录
          label: master  # 默认分支

4. 启动 Config Server

运行项目后,访问 http://localhost:8888/{application}/{profile},例如:

curl http://localhost:8888/config/dev

这将返回对应应用和环境的配置信息。

二、配置客户端(Config Client)

1. 添加依赖

在客户端项目中添加以下依赖:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

2. 配置客户端

在客户端项目的 bootstrap.yml 文件中配置 Config Server 的地址和环境:

spring:
  application:
    name: config-client
  cloud:
    config:
      uri: http://localhost:8888
      profile: dev
      label: master

bootstrap.yml 的加载优先级高于 application.yml,因此适合用于加载外部配置。

3. 使用配置

在客户端项目中,可以直接通过 @Value@ConfigurationProperties 注解使用配置中心的配置信息。例如:

@RestController
public class ConfigClientController {
    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/config")
    public String getConfig() {
        return configInfo;
    }
}

三、核心功能

1. 配置文件的命名规则

Spring Cloud Config 支持以下几种资源路径:

  • /{application}-{profile}.yml
  • /{label}/{application}-{profile}.yml
  • /{application}/{profile}[/{label}]

例如:

  • http://localhost:8888/config-client/dev:获取 config-client-dev.yml 文件的配置。
  • http://localhost:8888/master/config-client-dev.yml:指定分支 master。

2. 配置加密与安全

为了保护敏感信息,Spring Cloud Config 支持加密配置:

  1. 配置加密密钥:
    encrypt:
      key: my-secret-key
    
  2. 加密数据:
    curl http://localhost:8888/encrypt -d "secret123"
    
  3. 使用密文:
    datasource:
      password: '{cipher}密文字符串'
    

3. 动态配置刷新

客户端可以通过调用 /actuator/refresh 端点来刷新配置:

  1. 添加 Actuator 依赖:
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
  2. 暴露 refresh 端点:
    management:
      endpoints:
        web:
          exposure:
            include: refresh
    
  3. 调用刷新接口:
    POST http://localhost:8080/actuator/refresh
    

四、多环境支持

Spring Cloud Config 支持多环境配置,通过 spring.profiles.active 指定环境。例如:

  • config-client-dev.yml:开发环境配置
  • config-client-prod.yml:生产环境配置

客户端可以通过设置 spring.profiles.active 来加载对应环境的配置。

五、总结

Spring Cloud Config 提供了一个集中化的配置管理解决方案,支持多种配置源、动态刷新和多环境配置。通过简单的配置和依赖添加,即可快速搭建配置中心和客户端。它不仅简化了配置管理的复杂性,还提高了系统的灵活性和可维护性。

到此这篇关于Spring Cloud Config 配置中心使用指南的文章就介绍到这了,更多相关Spring Cloud Config 配置中心内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mac下idea的svn密码记不住的问题及处理方法

    mac下idea的svn密码记不住的问题及处理方法

    这篇文章主要介绍了mac下idea的svn密码记不住的问题及处理方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • 浅谈springcloud gateway 连接保活问题

    浅谈springcloud gateway 连接保活问题

    这篇文章主要介绍了springcloud gateway 连接保活问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Mybatis对mapper的加载流程深入讲解

    Mybatis对mapper的加载流程深入讲解

    这篇文章主要给大家介绍了关于Mybatis对mapper的加载流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • SpringBoot整合Redis实现访问量统计的示例代码

    SpringBoot整合Redis实现访问量统计的示例代码

    本文主要介绍了SpringBoot整合Redis实现访问量统计的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 详解Spring中使用xml配置bean的细节

    详解Spring中使用xml配置bean的细节

    本篇文章主要介绍了Spring中使用xml配置bean的细节,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • JAVA大作业之图书管理系统实现全解

    JAVA大作业之图书管理系统实现全解

    随着网络技术的高速发展,计算机应用的普及,利用计算机对图书馆的日常工作进行管理势在必行,本篇文章手把手带你用Java实现一个图书管理系统,大家可以在过程中查缺补漏,提升水平
    2022-01-01
  • java实现Linux(centos) 中docker容器下命令交互的代码(配置向导)

    java实现Linux(centos) 中docker容器下命令交互的代码(配置向导)

    小编在开发项目时遇到个需求,因为系统部署每次都要多台机器拆分部署,很麻烦,怎么配置比较方便呢,今天小编给大家介绍java实现Linux(centos) 中docker容器下命令交互的代码(配置向导),感兴趣的朋友一起看看吧
    2021-05-05
  • javax.validation.constraints如何校验参数合法性

    javax.validation.constraints如何校验参数合法性

    本文将深入探讨javax.validation.constraints的基本用法和高级应用,帮助读者更好地理解和运用这个强大的校验框架,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • java程序员必会的远程debug教程

    java程序员必会的远程debug教程

    这篇文章主要为大家介绍了java程序员必会的远程debug教程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Java获取当地的日出日落时间代码分享

    Java获取当地的日出日落时间代码分享

    这篇文章主要介绍了Java获取当地的日出日落时间代码分享,国外猿友写的一个类,需要的朋友可以参考下
    2014-06-06

最新评论