当前位置:   article > 正文

Spring Cloud Config: 了解、原理和使用_springcloudconfig原理

springcloudconfig原理

Spring Cloud Config: 了解、原理和使用

Spring Cloud Config 是 Spring Cloud 生态系统中的一个重要组件,它提供了一种分布式配置管理的解决方案,能够集中管理应用程序的配置,支持多种后端存储,如 Git、SVN、本地文件系统、Vault 等。在本文中,我们将介绍 Spring Cloud Config 的概念、原理和使用方法,并提供一些代码示例。

在这里插入图片描述

了解 Spring Cloud Config

Spring Cloud Config 通过将应用程序配置集中管理,使得应用程序的配置更加易于管理和维护。它通过将配置存储在远程仓库中(如 Git),并提供 REST API 来访问配置,从而实现了分布式配置管理。Spring Cloud Config 还支持配置的版本管理,可以根据不同的环境、不同的应用程序等来管理配置,从而实现了应用程序的多环境部署。

Spring Cloud Config 有两个核心组件:

  • Config Server:配置服务器,用于存储和管理应用程序的配置。
  • Config Client:配置客户端,用于从 Config Server 中获取配置。

Spring Cloud Config 的原理

Spring Cloud Config 的核心原理是将应用程序的配置存储在远程仓库中,并将其作为一个 REST API 来访问。Config Server 会自动从远程仓库中获取配置,然后将其返回给 Config Client。Config Client 可以通过 HTTP 或 HTTPS 协议来访问 Config Server,并获取应用程序的配置。

Spring Cloud Config 支持多种仓库类型,如 Git、SVN、本地文件系统、Vault 等。其中,Git 是最常用的仓库类型。在使用 Git 作为配置仓库时,Config Server 会自动从 Git 仓库中获取配置文件,并将其转换为一个 REST API 来访问。配置文件的命名规则是 a p p l i c a t i o n − {application}- application{profile}.yml 或 a p p l i c a t i o n − {application}- application{profile}.properties,其中 a p p l i c a t i o n 是应用程序的名称, {application} 是应用程序的名称, application是应用程序的名称,{profile} 是应用程序的环境。

如何使用 Spring Cloud Config

下面我们来介绍如何使用 Spring Cloud Config 来管理应用程序的配置。

创建 Config Server

首先,我们需要创建一个 Config Server,用于存储和管理应用程序的配置。可以使用 Spring Boot 来创建 Config Server,只需要添加以下依赖:

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-config-server</artifactId>
</dependency>
  • 1
  • 2
  • 3
  • 4

然后,在应用程序的启动类上添加 @EnableConfigServer 注解,即可启动 Config Server:

@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
  public static void main(String[] args) {
    SpringApplication.run(ConfigServerApplication.class, args);
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

默认情况下,Config Server 会从 Git 仓库中获取配置文件。可以通过在 application.yml 文件中添加以下配置来指定 Git 仓库的位置:

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/spring-cloud-samples/config-repo.git
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

创建 Config Client

接下来,我们需要创建一个 Config Client,用于从 Config Server 中获取应用程序的配置。可以使用 Spring Boot 来创建 Config Client,只需要添加以下依赖:

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-config</artifactId>
</dependency>
  • 1
  • 2
  • 3
  • 4

然后,在应用程序的启动类上添加 @EnableConfigrationProperties 注解,即可启动 Config Client:

@SpringBootApplication
@EnableConfigurationProperties
public class ConfigClientApplication {
  public static void main(String[] args) {
    SpringApplication.run(ConfigClientApplication.class, args);
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

默认情况下,Config Client 会从 Config Server 中获取应用程序的配置。可以通过在 application.yml 文件中添加以下配置来指定 Config Server 的位置:

spring:
  cloud:
    config:
      uri: http://localhost:8888
  • 1
  • 2
  • 3
  • 4

获取配置

现在,我们已经创建了 Config Server 和 Config Client,下面我们来看看如何从 Config Server 中获取应用程序的配置。

我们可以通过在 application.yml 文件中添加以下配置来指定应用程序的名称和环境:

spring:
  application:
    name: myapp
  profiles:
    active: dev
  • 1
  • 2
  • 3
  • 4
  • 5

这里,我们将应用程序的名称设置为 myapp,环境设置为 dev。然后,在 Config Server 中创建一个名为 myapp-dev.properties 的配置文件,内容如下:

foo=bar
  • 1

接下来,在 Config Client 中可以通过 @Value 注解来获取配置:

@RestController
public class ConfigController {
  @Value("${foo}")
  private String foo;

  @GetMapping("/foo")
  public String getFoo() {
    return foo;
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

这样,当访问 /foo 接口时,就可以获取到配置中的 foo 属性了。

配置加解密

在实际使用中,我们可能需要对配置进行加解密,以保证配置的安全性。Spring Cloud Config 支持配置加解密,可以使用 Jasypt 来实现。

首先,我们需要在 Config Server 和 Config Client 中添加以下依赖:

<dependency>
  <groupId>com.github.ulisesbocchio</groupId>
  <artifactId>jasypt-spring-boot-starter</artifactId>
</dependency>
  • 1
  • 2
  • 3
  • 4

然后,在 Config Server 中,可以通过在 application.yml 文件中添加以下配置来指定加解密密钥:

jasypt:
  encryptor:
    password: mysecretkey
  • 1
  • 2
  • 3

然后,在 Config Server 中创建加密的配置文件,可以使用 Jasypt 命令行工具来加密:

java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="foo=bar" password=mysecretkey algorithm=PBEWithMD5AndDES
  • 1

将加密后的结果保存为 myapp-dev.properties.encrypted 文件。然后,在 Config Client 中,可以通过在 application.yml 文件中添加以下配置来指定解密密钥:

jasypt:
  encryptor:
    password: mysecretkey
  • 1
  • 2
  • 3

然后,在 Config Client 中可以直接获取解密后的配置:

@RestController
public class ConfigController {
  @Value("${foo}")
  private String foo;

  @GetMapping("/foo")
  public String getFoo() {
    return foo;
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

这样,当访问 /foo 接口时,就可以获取到解密后的配置中的 foo 属性了。

总结

Spring Cloud Config 是 Spring Cloud 生态系统中的一个重要组件,它提供了一种分布式配置管理的解决方案,能够集中管理应用程序的配置,支持多种后端存储,如 Git、SVN、本地文件系统、Vault 等。在本文中,我们介绍了 Spring Cloud Config 的概念、原理和使用方法,并提供了一些代码示例。希望本文对于了解和使用 Spring Cloud Config 有所帮助。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/1011886
推荐阅读
相关标签
  

闽ICP备14008679号