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

news2024/11/12 15:29:18

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>

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

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

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

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/spring-cloud-samples/config-repo.git

创建 Config Client

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

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

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

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

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

spring:
  cloud:
    config:
      uri: http://localhost:8888

获取配置

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

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

spring:
  application:
    name: myapp
  profiles:
    active: dev

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

foo=bar

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

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

  @GetMapping("/foo")
  public String getFoo() {
    return foo;
  }
}

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

配置加解密

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

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

<dependency>
  <groupId>com.github.ulisesbocchio</groupId>
  <artifactId>jasypt-spring-boot-starter</artifactId>
</dependency>

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

jasypt:
  encryptor:
    password: mysecretkey

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

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

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

jasypt:
  encryptor:
    password: mysecretkey

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

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

  @GetMapping("/foo")
  public String getFoo() {
    return foo;
  }
}

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

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/715363.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ADG环境下统计每天的归档

现场项目经理反馈&#xff0c;使用日常的归档查询sql看到每天的归档量都快2T了&#xff0c;截图出来确实 很大 查看每天的归档文件总量比当天的归档量少了一半左右&#xff0c;百度了很多案例&#xff0c;最后发现问题该环境是ADG一主一备&#xff0c;每天的归档量也传输到备库…

JavaScript(JS)的引入方法

内部脚本 JS代码必须位于<script></script>标签之间在HTML文档中&#xff0c;可以在任意地方&#xff0c;放置任意数量的<script>一般会把脚本置于<body>元素的底部&#xff0c;可以改善显示速度 外部脚本&#xff1a;将JS代码定义在外部JS文件中&…

0基础学习VR全景平台篇 第55篇:专业版功能-数据统计

使用蛙色VR平台数据统计功能&#xff0c;可以统计分析整个账号下【所有作品】的访问数据&#xff1b; 亦可分析单个作品中【每个场景】的访问数据。 账号数据统计功能位置 单作品数据统计功能位置 一、本功能将用在哪里&#xff1f; 数据统计功能&#xff0c;可实现对作品总访…

自发二元行为预测人际神经同步(INS)的出现

导读 人际神经同步(INS)正在成为预测多人协调、沟通和合作成功等社会互动的有力标志。由于对INS的起源知之甚少&#xff0c;本研究测试了INS是否以及如何从自发的二元行为中产生。要求一对参与者在不说话或做出共同语言手势的情况下互相看着对方&#xff0c;并记录他们的神经活…

网络分层模型以及通信流程

2.1OSI模型和tcp/ip模型 Tcp/ip模型早于ISO的OSI模型 2.2网络为什么要分层&#xff1f; 将一个大的问题进行拆分&#xff0c;分而治之&#xff0c;专门的层处理专门的事情。而且那层出现问题只需对该层进行处理&#xff0c;不会影响到其他层。就相当于做菜的过程&#xff0c;…

满足数字化转型对无线网络性能需求,锐捷全场景 Wi-Fi 7 方案

数字化转型深入了各行业&#xff0c;对于算力、数据、网络的需求也水涨船高。其中&#xff0c;无线网络对于生产办公等等场景数据传输的保障&#xff0c;愈加重要。 例如生产场景里&#xff0c;工厂增设各类自动化、智能化的传感器&#xff0c;都需要以无线&#xff08;甚至全部…

我的《CSDN铁粉宝典》

完成一篇如何获得铁粉&#xff0c;或者相关的文章且质量分达到80分以上即可 一 什么是铁粉&#xff1f; 顾名思义&#xff0c;就是你的铁杆粉丝&#xff0c;但是这个只是过通俗的解释&#xff0c;那么在CSDN规则中&#xff0c;什么是铁粉呢&#xff1f;官方给了一系列解释 “为…

新发布的 DBeaver 23.1.1 版本正式支持时序数据库 TDengine

众所周知&#xff0c;DBeaver 是一个流行的开源数据库管理和 SQL 客户端工具&#xff0c;为管理和使用各种类型的数据库&#xff08;包括多个时序数据库&#xff09;提供强大而灵活的平台。为了让大家在应用上更加便捷&#xff0c;我们与 DBeaver 达成合作&#xff0c;新发布的…

蓝桥杯专题-试题版含答案-【字母统计】【计算球体积】【16进制的简单运算】【C小加随机数】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

子元素比父元素 z-index高低的问题

一.大坑---设置父relative z-index:0 .parent {position: relative;z-index:0; } .child {position: absolute;z-index:9999; }子元素居然比父元素的兄弟元素低一个层级&#xff01; 原因&#xff1a; 当你将父元素的 position 属性设置为 relative 并且 z-index 属性设置为…

美团落子泛娱乐

配图来自Canva可画 据工信部发布的《泛娱乐产业白皮书》显示&#xff0c;中国泛娱乐核心产业&#xff0c;已成为数字经济的重要支柱和新经济发展的重要引擎。因此&#xff0c;构建一个多产业联动的泛娱乐生态体系&#xff0c;便成为了企业发展的共同目标。比如&#xff0c;腾讯…

剑指 Offer 65: 不用加减乘除做加法

这道题想着使用一位一位进位的方法做&#xff0c;写这个的时候忘记了异或运算符&#xff01;&#xff01; 这道题看了解答发现很好想&#xff0c;什么位置有进位&#xff1f;就是两个相同位置数值都为1的时候&#xff0c;那么就会往前进一位&#xff1b;同理&#xff0c;没有进…

open*w*r*t +dnspod ddns动态解析ipv6 远程控制移动内网路由器

1.修改openw*r*t web https管理端口为8443 修改ipv6 https 监听端口list listen_https [::]:8443 cd /etc/config/vi uhttpdvi /etc/config/uhttpdconfig uhttpd mainlist listen_http 0.0.0.0:80list listen_http [::]:80list listen_https 0.0.0.0:443list listen_https [:…

视觉SLAM十四讲需要提前知道的数学基础知识

学习视觉SLAM十四讲之前的必备数学基础知识 1. 正交矩阵2. 线性关系3. 求矩阵的逆4. 叉乘5.反对称矩阵6. 复数 1. 正交矩阵 定义&#xff1a; 设n阶矩阵A满足AATATAI &#xff0c;则称A为正交矩阵 性质&#xff1a; 以下为手写&#xff0c;从小字丑&#xff0c;请多担待。。 …

第二阶段、数据库的使用

数据库&#xff1a;在这里一mysql为例 首先使用数据库就必须安装 安装数据库&#xff08;mysql&#xff09; 数据库的安装和下载 数据库的使用和命令 连接和断开服务器 启动mysql服务&#xff1a; sudo service mysql start 停止mysql服务&#xff1a; sudo service mysql …

加载Bert预训练模型时报错:huggingface_hub.utils._validators.HFValidationError

具体报错情况如下&#xff1a; huggingface_hub.utils._validators.HFValidationError: Repo id must be in the form repo_name or namespace/repo_name: ./bert/bert_base_cased_ICEWS14. Userepo_typeargument if needed. 很简单&#xff0c;我download下来的代码没有并没有…

Java中生成指定长度验证码

Java中生成指定长度验证码 1.方法一:执行效率高 /*** 生成指定位数验证码,纯数字运算效率最高** param maxSize* return*/public static Long generateRandomCode(int maxSize) {if (maxSize < 0) {throw new BizException(ErrorCodeEnum.PARAM_ERROR);}//小数点后16位的do…

Mysql内外连接的详细用法与示例

当处理关系型数据库时&#xff0c;连接操作是非常常见且重要的。MySQL提供了多种连接类型&#xff0c;其中包括内连接、外连接和交叉连接。在本篇博文中&#xff0c;我们将详细介绍MySQL中内连接和外连接的用法&#xff0c;并提供一些复杂的例子来帮助理解。 文章目录 1.内连接…

计网之运输层

因特网协议概述 常用协议应用层HTTP&#xff08;超文本传输协议&#xff09;、FTP&#xff08;文件传输协议&#xff09;、SMTP&#xff08;简单邮件传输协议&#xff09;、DNS&#xff08;域名系统&#xff09;、DHCP&#xff08;动态主机配置协议&#xff09;、SNMP&#xff…

Texlive2023安装过程中点击install-tl-windows.bat一直闪退

我安装了Texlive的镜像&#xff0c;因为数学建模会用到&#xff0c;在安装过程中我遇到了一个问题&#xff1a; install-tl-windows.bat一直闪退 当我解压完texlive.iso的时候,正常应该点击.bat文件就能出现页面&#xff0c;但是我cmd窗口一直闪退 怎样解决&#xff1f; 这个…