Spring Cloud 统一配置

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/catoop/article/details/50955949 本文使用 Spring Cloud 进行集中式配置管理,将以往的配置文件从项目中摘除后放到git 或svn中集中管理,并在需要变更的时候,可以通知到各应用程序,应用程序刷新配置不需要重启。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/catoop/article/details/50955949

本文使用 Spring Cloud 进行集中式配置管理,将以往的配置文件从项目中摘除后放到git 或svn中集中管理,并在需要变更的时候,可以通知到各应用程序,应用程序刷新配置不需要重启。

先套用下面这张图来看一下我们需要做的事情:
这里写图片描述

Git Repository 为存放配置的地方,当然你也可以选择SVN。
本文的Git 地址为:https://github.com/xzxiaoshan/config-repo

接着我们创建多模块Maven工程,包括 sample-cloud-all 、 sample-cloud-configserver 、 sample-cloud-client ,整体结构如下图:
这里写图片描述

其中config-repo 为配置文件存放位置,并非一个Maven工程,只是为了便于本地修改和提交。
整体源码地址在Github上,所以本文就不贴代码了
地址:https://github.com/xzxiaoshan/spring-cloud

至此,config-server 和 config-client 已经完成了,并且可以正常使用了。

再说一下基本原理:
git 上存放我们的远程配置文件
config-server 连接到 git
config-client 连接到config-server
当我们启动config-client 服务的时候,client 会通过连接的 config-server 拿到远程git 上面的配置文件,然后通过 Spring 加载到对象中。


那么,当我们修改了 git 上的远程配置文件后,如何在不重启 config-client 服务的情况下让项目中引用的配置信息更新呢?
首先,我们在 config-client 工程中添加依赖:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
            <optional>true</optional>
        </dependency>

然后在需要自动更新配置变量的Java类上,使用注解 @RefreshScope 修饰。

以后当我们再更新git上面的配置文件后,在 config-client 端执行POST 请求 http://localhost:8080/refresh 就可以更新刷新配置变量到内存中了。


如果我们 config-client 做的是分布式部署,岂不是要每一个机器都POST一下 /refresh 请求,这样显然不是最好的方法。
Spring Cloud Bus 为我们解决了这样的问题。

先看一下下面这张套用的图:
这里写图片描述

图中的 Cloud Bus 作为依赖库存在于每个App 中,并不是独立的服务。

官网源码地址 https://github.com/spring-cloud/spring-cloud-bus

因为时间原因,对于 Spring Cloud Bus 请大家自行了解下。
Cloud Bus 需要依赖AMQP、Redis、Kafka 这样的组件做为代理才可以使用。

经过对Spring Cloud 的统一配置管理的了解和测试,本人发现这个做的并不好,特别是在分布式部署上虽然完全可以支持,但是总感觉使用起来比较麻烦。

个人还是推荐大家使用百度开源的 Disconf 进行集中化配置管理。而且这个目前也比较成熟,很多商用项目已经在使用。

目前 Spring Cloud 还并不成熟,所以大家慢慢学习和研究,博主也期待 Spring Cloud 真正强大的一天早一天到来。

目录
相关文章
|
11天前
|
Java Spring
【Spring】方法注解@Bean,配置类扫描路径
@Bean方法注解,如何在同一个类下面定义多个Bean对象,配置扫描路径
137 73
|
2月前
|
Java 开发者 微服务
手写模拟Spring Boot自动配置功能
【11月更文挑战第19天】随着微服务架构的兴起,Spring Boot作为一种快速开发框架,因其简化了Spring应用的初始搭建和开发过程,受到了广大开发者的青睐。自动配置作为Spring Boot的核心特性之一,大大减少了手动配置的工作量,提高了开发效率。
69 0
|
3月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
63 4
|
3月前
|
Java API 数据库
Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐
本文通过在线图书管理系统案例,详细介绍如何使用Spring Boot构建RESTful API。从项目基础环境搭建、实体类与数据访问层定义,到业务逻辑实现和控制器编写,逐步展示了Spring Boot的简洁配置和强大功能。最后,通过Postman测试API,并介绍了如何添加安全性和异常处理,确保API的稳定性和安全性。
61 0
|
11天前
|
Java Spring
【Spring配置相关】启动类为Current File,如何更改
问题场景:当我们切换类的界面的时候,重新启动的按钮是灰色的,不能使用,并且只有一个Current File 项目,下面介绍两种方法来解决这个问题。
|
11天前
|
Java Spring
【Spring配置】idea编码格式导致注解汉字无法保存
问题一:对于同一个项目,我们在使用idea的过程中,使用汉字注解完后,再打开该项目,汉字变成乱码问题二:本来a项目中,汉字注解调试好了,没有乱码了,但是创建出来的新的项目,写的注解又成乱码了。
|
11天前
|
Java Spring
【Spring配置】创建yml文件和properties或yml文件没有绿叶
本文主要针对,一个项目中怎么创建yml和properties两种不同文件,进行配置,和启动类没有绿叶标识进行解决。
|
19天前
|
NoSQL Java Redis
Spring Boot 自动配置机制:从原理到自定义
Spring Boot 的自动配置机制通过 `spring.factories` 文件和 `@EnableAutoConfiguration` 注解,根据类路径中的依赖和条件注解自动配置所需的 Bean,大大简化了开发过程。本文深入探讨了自动配置的原理、条件化配置、自定义自动配置以及实际应用案例,帮助开发者更好地理解和利用这一强大特性。
69 14
|
16天前
|
XML Java 数据格式
Spring容器Bean之XML配置方式
通过对以上内容的掌握,开发人员可以灵活地使用Spring的XML配置方式来管理应用程序的Bean,提高代码的模块化和可维护性。
53 6
|
3月前
|
Java API Spring
在 Spring 配置文件中配置 Filter 的步骤
【10月更文挑战第21天】在 Spring 配置文件中配置 Filter 是实现请求过滤的重要手段。通过合理的配置,可以灵活地对请求进行处理,满足各种应用需求。还可以根据具体的项目要求和实际情况,进一步深入研究和优化 Filter 的配置,以提高应用的性能和安全性。