首页 > 编程笔记

Spring Cloud Config组件简介

Spring Cloud Config 是 Spring Cloud 家族的一个开源组件,它为分布式系统提供配置支持,通过配置中心管理微服务所有环境下的配置信息。Spring Cloud Config 默认采用 Git 作为配置中心,其主要特性如下:

Spring Cloud Config架构如图 1 所示。
图1 Spring Cloud Config架构
图1 Spring Cloud Config架构

接下来介绍基于 Spring Cloud Config 配置中心的搭建过程。

(1)首先在个人 GitHub 网站上新建自己的仓库,本例中的仓库名为 config-repo,然后在仓库中新建 4 个配置文件。config-client.yml 文件内容如下:

#定义属性
name: config-client-default
config-client-dev.yml 文件内容如下:

#定义属性
name: config-client-dev
config-client-test.yml 文件内容如下:

#定义属性
name: config-client-test
config-client-prod.yml 文件内容如下:

#定义属性
name: config-client-prod

(2)搭建 config-server 工程,依赖 spring-cloud-config-server 包,代码如下:
<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-server</artifactId>
        <version>2.2.5.RELEASE</version>
</dependency>
(3)修改 config-server 工程的配置文件 application.yml,在其中添加 Git 仓库配置,具体如下:

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/xxx/config-repo
          username: www.weixueyuan.net
          password: 123456
          default-label: master

(4)在启动类中添加注解 @EnableConfigServer,使启动服务后即可访问配置文件。访问配置文件有一定的规则,具体如下:

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

其中,{application} 为应用名称,{profile} 为环境配置,{label} 为 Git 的分支。

访问 4 个URL,均可以获得配置数据:
(5)搭建客户端工程 config-client,依赖 spring-cloud-starter-config 包,然后修改 bootstrap.yml 文件,代码如下:

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

(6)新建 Controller 类访问配置数据,代码如下:
@RestController
public class ConfigController {
    @Value("${name}")
    private String name;
    @GetMapping("/name")
    public String getName() {
        return name;
    }
}
启动服务访问接口即可获取 name 配置数据。本文只介绍了 Spring Cloud Config 的基本配置,如果想实现动态地修改配置,可以结合 Webhook 或者Spring Cloud Bus 进行配置修改的实时刷新。

优秀文章