spring-cloud入门之spring-cloud-config(配置中心)

下面是 “spring-cloud入门之spring-cloud-config(配置中心)” 的完整攻略。

简介

Spring Cloud Config 是一个分布式配置管理工具,它可以让您在不同的应用程序和服务之间共享和管理应用程序的配置。它可以轻松地管理不同环境下的配置(如开发、测试、生产环境)。

Spring Cloud Config 可以使用多种后端存储来存储配置,包括本地文件系统、Git 存储库等。

在本文中,我们将介绍如何在 Spring Boot 应用程序中使用 Spring Cloud Config 来集中管理配置。

准备工作

使用 Spring Cloud Config,需要准备如下环境:

  • JDK 1.8 或更高版本;
  • Maven 3.2 或更高版本;
  • Git;
  • 一个本地文件系统或一个远程 Git 存储库。

操作步骤

1. 创建一个 Spring Boot 应用程序

在开始之前,请确保已按照准备工作中的要求进行了配置。

使用 Spring Initializr 创建一个新的 Spring Boot 应用程序。项目依赖中添加 spring-cloud-config-server 和 spring-boot-starter-web 两个依赖项。

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-server</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

2. 添加配置

在 application.properties 文件中添加以下配置:

server.port=8888
spring.cloud.config.server.git.uri=<git-repo-url>
spring.cloud.config.server.git.username=<git-username>
spring.cloud.config.server.git.password=<git-password>
spring.cloud.config.server.git.search-paths=config-repo

其中,

  • server.port:配置服务器端口;
  • spring.cloud.config.server.git.uri:Git 存储库的 URL;
  • spring.cloud.config.server.git.username:Git 存储库的用户名;
  • spring.cloud.config.server.git.password:Git 存储库的密码;
  • spring.cloud.config.server.git.search-paths:在存储库中的搜索路径。

3. 创建 Git 存储库并添加配置文件

在 Git 存储库中创建一个名为 config-repo 的目录。在这个目录中添加一个名为 application.properties 的文件,并设置一些属性值:

message=Hello World!

4. 启动服务

在项目根目录下执行以下命令:

mvn spring-boot:run

5. 测试

打开 Web 浏览器,输入 http://localhost:8888/application/default。您将看到一个 JSON 字符串,其中包含从 Git 存储库中读取的属性值。

{
    "name": "application",
    "profiles": [
        "default"
    ],
    "label": null,
    "version": null,
    "state": null,
    "propertySources": [
        {
            "name": "<git-repo-url>/config-repo/application.properties",
            "source": {
                "message": "Hello World!"
            }
        }
    ]
}

您还可以使用 curl 命令从命令行检索配置:

curl http://localhost:8888/application/default

输出:

{
    "name" : "application",
    "profiles" : [ "default" ],
    "label" : null,
    "version" : "76ed25889e3b0cd23d3eba60a3f30907b53c4385",
    "state" : null,
    "propertySources" : [ {
        "name" : "https://github.com/baeldung/spring-cloud-config-repo/config-repo/application.properties",
        "source" : {
            "message" : "Hello World!"
        }
    } ]
}

示例说明

示例 1:多环境配置

可以使用 Spring Cloud Config 管理不同环境中的配置文件。例如,在 Git 存储库中添加一个名为 application-dev.properties 的文件并设置一些属性值:

message=Hello World! - Dev

然后,在命令行中使用以下命令启动应用程序:

mvn spring-boot:run -Dspring.profiles.active=dev

现在,您可以使用 curl 命令检索 dev 环境的配置:

curl http://localhost:8888/application/dev

输出:

{
    "name": "application",
    "profiles": [
        "dev",
        "default"
    ],
    "label": null,
    "version": "7d2336d2368477c7fd3a933df148e94d426c4bbb",
    "state": null,
    "propertySources": [
        {
            "name": "<git-repo-url>/config-repo/application-dev.properties",
            "source": {
                "message": "Hello World! - Dev"
            }
        },
        {
            "name": "<git-repo-url>/config-repo/application.properties",
            "source": {
                "message": "Hello World!"
            }
        }
    ]
}

示例 2:加密配置

Spring Cloud Config 还支持加密配置。例如,在 Git 存储库中添加一个名为 application.yml 的文件并设置一些属性值:

secret:
   password: '{cipher}AgDp7RDbFtXUbg5wvxiF+6xoq+aNeRaUd1HfB5nPlfo='

这里的 {cipher} 表示 password 属性是加密的。现在,我们需要一个密钥来解密配置。可以使用以下命令生成一个密钥:

keytool -genkeypair -alias mytestkey -keyalg RSA \
  -dname "CN=Web Server,OU=Unit,O=Organization,L=City,S=State,C=US" \
  -keypass changeme -keystore server.jks -storepass letmein

然后,我们需要在 bootstrap.yml 中添加以下配置:

encrypt:
  key-store:
    location: classpath:/server.jks
    password: letmein
    alias: mytestkey
    store-password: letmein

现在,可以使用 curl 命令检查加密的密码:

curl http://localhost:8888/application/default

输出:

{
    "name": "application",
    "profiles": [
        "default"
    ],
    "label": null,
    "version": "7d2336d2368477c7fd3a933df148e94d426c4bbb",
    "state": null,
    "propertySources": [
        {
            "name": "<git-repo-url>/config-repo/application.properties",
            "source": {
                "message": "Hello World!"
            }
        },
        {
            "name": "<git-repo-url>/config-repo/application.yml",
            "source": {
                "secret.password": "hello"
            }
        }
    ]
}

以上就是 “spring-cloud入门之spring-cloud-config(配置中心)” 的完整攻略,希望对您有帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:spring-cloud入门之spring-cloud-config(配置中心) - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • 基于display:table的CSS布局让HTML元素和像table一样

    基于display:table的CSS布局让HTML元素和像table一样 1. 介绍 CSS的display属性可以用于控制元素如何显示。其中,display:table可以让HTML元素的布局行为像表格一样。这种方法可以实现类似表格的自适应性,并且兼容性良好。 2. 步骤 2.1 HTML结构 首先,我们需要在HTML中创建需要布局的元素,并将其包裹在一…

    other 2023年6月28日
    00
  • 算法打基础——HashⅡ: 全域哈希与完美哈希

    算法打基础——HashⅡ: 全域哈希与完美哈希 在算法打基础——HashⅠ: 哈希表一文中,我们介绍了哈希表这种数据结构的基本思想及其应用。然而,在实际应用中,哈希表也会遇到一些问题,例如哈希冲突和哈希函数不尽如人意等,这些问题会降低哈希表的效率和准确性,因此需要更加高效和安全的哈希方法来解决这些问题。 本文将介绍两种高效的哈希方法:全域哈希和完美哈希。 全…

    其他 2023年3月28日
    00
  • Qt编写提示进度条的实现示例

    我们来详细讲解如何使用Qt编写提示进度条的实现示例。 步骤1:创建一个进度条 在Qt中,我们可以使用QProgressBar类来创建一个进度条。以下是创建进度条的示例代码: QProgressBar* progressBar = new QProgressBar(this); progressBar->setMinimum(0); progressBa…

    other 2023年6月26日
    00
  • Spring Boot集成Swagger2项目实战

    以下是Spring Boot集成Swagger2项目实战的完整攻略: 1. 添加Swagger2依赖 在项目的pom.xml文件中添加Swagger2的依赖: <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-star…

    other 2023年10月16日
    00
  • cmd组合和管道命令的使用方法(命令组合)

    下面我来详细讲解一下cmd组合和管道命令的使用方法。 1. 命令组合 命令组合是指在一个命令行中使用多个命令,通过分号或者双竖线来连接这些命令,实现多个命令的联合执行。 1.1 分号分隔的多个命令 在Windows的CMD中,分号用来分隔多个命令的执行,它会先执行第一个命令,然后再执行第二个命令,以此类推,直到所有的命令都执行完毕。 示例: dir c:\ …

    other 2023年6月26日
    00
  • Java高并发测试框架JCStress详解

    Java高并发测试框架JCStress详解 什么是JCStress? JCStress是一个Java高并发测试框架,用于测试多线程环境下的并发问题。它提供了一套丰富的注解和工具,用于编写和执行并发测试。 安装JCStress 要使用JCStress,需要在项目的构建文件中添加JCStress的依赖。可以通过Maven或Gradle来管理依赖。 示例:在Mav…

    other 2023年10月16日
    00
  • js的基本数据类型与引用数据类型

    JavaScript的基本数据类型与引用数据类型 在JavaScript中,数据类型可以分为基本数据类型和引用数据类型。这两种类型在JavaScript中有如下区别。 基本数据类型 JavaScript的基本数据类型有:字符串(String)、数字(Number)、布尔(Boolean)、null,undefined,以及Symbol(ES6新增)。这些数据…

    其他 2023年3月28日
    00
  • 百度地图、高德地图、google地图等坐标系相关梳理

    以下是详细讲解“百度地图、高德地图、Google地图等坐标系相关梳理的完整攻略”: 百度地图、高德地图、Google地图等坐标系相关梳理 在使用地图相关的应用程序时,经常需要涉及到坐标系的转换。不同的地图服务提供商使用不同的坐标系,因此需要进行坐标系的转换。本攻略将介绍百度地图、高德地图、Google地图等常用地图服务提供的坐标系,并提供坐标系转换的示例。 …

    other 2023年5月10日
    00
合作推广
合作推广
分享本页
返回顶部