前文讲解Spring Cloud + zuul 实现了SpringbootAction-One和SpringbootAction-two两个项目的路由切换,正确访问到项目中的资源。这两个项目各自拥有一份application.yml项目配置文件,配置文件中有一部分相同的配置参数,如果涉及到修改,需要进行多处修改。那么有没有一种技术,能够实现这些相同参数的加载呢?能不能实现配置参数的集中修改呢?当然有,这个技术就是Spring Cloud Config技术。
Spring Cloud Config为架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用环境提供了一个中心化的外部配置,它解决了这两个痛点:
- 集中式管理
在开发中多个微服务可能使用相同的配置,假设有50个微服务,如果配置需要修改配置文件,就意味着我们需要修改50个微服务的yml文件。使用配置中心后,就可以做到一处修改,处处修改。
- 动态修改配置
使用配置中心,配合actuator可以实现配置的动态修改,无需重启服务。
1、config服务端搭建
首先利用MyEclipe2019创建web project工程,命名为“Springboot-config-server”,然后依次修改项目文件。
(1)pom.xml文件修改
添加config配置关联jar包,如下图所示:
(2)application.xml文件修改
此处,采用config的本地配置模式,配置文件的存储路径为“C:/dev/config-repo”,学友们可另行修改,详细如下:
(3)@EnableConfigServer
在启动文件中,添加@EnableConfigServer注解,启动spring cloud config的配置服务器功能。
(4)启动项目
到此,项目已经建立完成,可启动项目,查看项目运行情况。由于项目中使用了服务注册软件consul,项目启动前,必须先启动consul软件。项目启动后,在浏览器中输入http://localhost:8500,查看项目注册情况,如下图所示
2、config 客户端搭建
首先利用MyEclipe2019创建web project工程,命名为“Springboot-config-client”,然后依次修改项目文件。
(1)pom.xml文件修改
添加config配置关联jar包,如下图所示:
(2)application.xml文件修改
首先右键选择项目下文件夹“src/main/resources”,创建“bootstrap.yml”文件,用于存储项目中不变更的参数。Springboot在项目加载的过程,默认优先加载“bootstrap.yml”,再通过spring cloud config加载加载配置文件。
“bootstrap.yml”文件配置参数如下图所示,此处默认从config中心加载“auth-erver”和“mango-config-client”两个文件。
(3)启动函数
启动函数如下图所示
(4)Controller添加
创建UserController.java文件,访问配置参数,详细如下图;注意,RestController类添加注解@RefreshScope,动态刷新参数
(5)启动项目
到此,项目已经建立完成,可启动项目,查看项目运行情况。。项目启动后,在浏览器中输入http://localhost:8500,查看项目注册情况,如下图所示
3、配置信息动态刷新
项目启动之后,可以测试项目配置信息的更新情况;
(1)利用config 服务器查看配置参数
在浏览器中输入地址http://localhost:8020/mango-config-client.yml,返回页面如下图所示:
(2)利用config 客户端查看参数
在浏览器中输入地址http://localhost:1881/configInfo,返回页面如下图所示:
(3)打开mango-config-client.yml文件,讲“test3”修改“test4”,再执行(1)、(2)两步,发现(1)更新了,但是(2)没有更新;
(4)PostMan手动刷新
以post方式,发送http://localhost:1881/actuator/refresh,返回如下图所示:
执行完成之后,再通过步骤(2)后,发现得到了新值。
本文讲解Spring cloud config 参数配置中心,项目建立完成之后,通过postman执行刷新指令,实现了在不重启项目的情况,实现了参数配置的刷新。下一篇文章,会在先有项目的基础上,实现参数的自动刷新,敬请等待!