一文吃透微服务配置中心:SpringCloudConfig

本文详细介绍了Spring Cloud Config的配置中心,包括它的功能、创建过程、配置内容的加密、配置自动刷新和用户认证。通过创建配置中心服务端,演示了如何将配置存储在Git仓库中,并实现配置的自动更新。此外,文章还探讨了配置内容加密的对称和非对称加密方法,以及如何利用Spring Cloud Bus和Git Webhooks实现配置的自动刷新。最后,介绍了如何为配置中心添加用户认证以提高安全性。
摘要由CSDN通过智能技术生成

配置中心:Spring Cloud Config

我们知道,一个微服务系统可能由成千上万的服务组成,每个服务都会有自己的配置,不同服务之间的有些配置是相同的,比如数据库。如果对于每个服务,我们都复制相同的配置,一旦该配置发生了变化,那么每个服务都需要修改,代价可想而知。

Spring Cloud已经考虑到了这一点,它为我们提供了一整套解决方案,那就是强大的Spring CloudConfig。

Spring Cloud Config简介

Spring Cloud Config是一个高可用的分布式配置中心,它支持将配置存放到内存(本地),也支持将其放到SVN、Git等版本管理工具进行统一管理。对于Spring Cloud Config,其官方网站是这样介绍的:

Centralized external configuration management backed by a git repository. The configuration resourcesmap directly to Spring Environment but could be used by non-Spring applications if desired.

大致含义是:通过Git仓库以支持集中式外部配置管理器,配置资源直接映射到Spring环境,但如果有必要,可以由非 Spring应用程序使用。

那么,本篇将引入 Spring Cloud Config组件,带领读者领略它的风采!

创建配置中心

创建配置中心一般分为以下几个步骤。

(1)创建Git仓库。为了方便测试,笔者已事先创建好Git仓库,地址为
https:/github.com/lynnlovemin/SpringCloudActivity.git。

(2)创建配置中心服务端。

在原有工程中创建一个moudle,命名为config,在pom.xml加入配置中心的依赖:

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</ artifactId></ dependency>
<dependency>
<artifactId>common</ artifactId><groupId>com. lynn.blog</groupId>
<version>1.8-SNAPSHOT</version>
</dependency>

在上述依赖中,我们加入了
spring-cloud-config-server依赖,该依赖为配置中心的服务端依赖,有了它我们就可以将当前工程作为配置中心的服务端工程。

(3)创建启动类ConfigApplication:

@EnableConfigServer
public class ConfigApplication extends Application{
public static void main(String[] args){
Application.startup(ConfigApplication.class,args);
}
}

可以看到,我们添加了@EnableConfigServer注解,用来启用配置中心服务端。启动类ConfigApplication继承了Application类。

其实,Application类是一个公共的启动父类,所有工程的启动入口都继承了该类并提供了一个静态方法以调用SpringApplication。我们提供这样一个类主要是因为每个SpringCloud子工程的启动类都需要加入了@SpringCloudApplication注解,于是每个子工程的启动类只要继承了Application类,就无须再添加@SpringCloudApplication注解,Application类的代码如下:

@SpringCloudApplication
@Componentscan(basePackages = "com.lynn.blog")public abstract class Application {
public static void startup(class<?> cls,string[] args){
SpringApplication.run(cls,args);
}
}

我们将Application 设置为抽象类,因为它无须实例化并且提供了静态方法 startup,该方法调用了SpringApplication.run方法,因此在ConfigApplication中直接调用startup方法就可以启动该应用。

读者应该也会注意到,Application类除了添加了@SpringCloudApplication 注解外,还添加了@ComponentScan注解,该注解可以在应用启动后,指定扫描的根包名。由于每个工程的根包名都不一样,比如 register工程为 com.lynn.blog.register,config 工程为 com.lynn.blog.config,而Application类是放到common工程中的,其根包名为com.lynn.blog.common,所以如果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值