博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Cloud 入门教程(三): 配置自动刷新
阅读量:5086 次
发布时间:2019-06-13

本文共 1597 字,大约阅读时间需要 5 分钟。

之前讲的配置管理, 只有在应用启动时会读取到GIT的内容, 之后只要应用不重启,GIT中文件的修改,应用无法感知, 即使重启Config Server也不行。

比如上一单元(Spring Cloud 入门教程(二): 配置管理)中的Hello World 应用,手动更新GIT中配置文件config-client-dev.properties的内容(别忘了用GIT push到服务器)

hello=Hello World from GIT version 1

刷新 http://locahost/8881/hello,页面内容仍然和之前一样,并没有反映GIT中最新改变, 重启config-server也一样,没有任何变化。要让客户端应用感知到这个变哈, Spring Cloud提供了解决方案是,客户端用POST请求/refresh方法就可以刷新配置内容。

1. 让客户端支持/refresh方法

要让/refresh生效,客户端需要增加一些代码支持:

1). 首先,在pom.xml中添加以下依赖。spring-boot-starter-actuator是一套监控的功能,可以监控程序在运行时状态,其中就包括/refresh的功能。

org.springframework.boot
spring-boot-starter-actuator

2). 其次,开启refresh机制, 需要给加载变量的类上面加载@RefreshScope注解,其它代码可不做任何改变,那么在客户端执行/refresh的时候就会更新此类下面的变量值,包括通过config client从GIT获取的配置。

@SpringBootApplication@RestController@RefreshScopepublic class ConfigClientApplication {    public static void main(String[] args) {        SpringApplication.run(ConfigClientApplication.class, args);    }    @Value("${hello}")    String hello;    @RequestMapping(value = "/hello")    public String hello(){        return hello;    }}

3). 启动应用, 查看http://localhost:8881/hello

4). 再次修改config-client-dev.properties的内容

hello=Hello World from GIT version 2

5). 用chome的postman发送POST请求:http://localhost/refesh

可以从POST的结果看到,此次refresh刷新的配置变量有hello

6). 再次访问http://localhost/hello,可见到配置已经被刷新

2. 通过Webhook自动触发/refresh方法刷新配置

以上每当GIT中配置文件被修改,仍然需要我们主动调用/refresh方法(手动调用或者写代码调用), 有没有办法让GIT中配置有改动就自动触发客户端的rfresh机制呢? 答案是:有。可以通过GIT提供的githook来监听push命令,如果项目中使用了Jenkins等持续集成工具(也是利用githook来监听的),就可以监听事件处理中直接调用/refresh方法就可以了。

 

转载于:https://www.cnblogs.com/7788IT/p/11324226.html

你可能感兴趣的文章
【2.2】创建博客文章模型
查看>>
【3.1】Cookiecutter安装和使用
查看>>
【2.3】初始Django Shell
查看>>
Linux(Centos)之安装Redis及注意事项
查看>>
虚继承中的内存布局
查看>>
学习日记2:nginx配置文件
查看>>
iOS Cell异步图片加载优化,缓存机制详解
查看>>
第二章 基本数据结构
查看>>
(转)Unity3D移动平台动态读取外部文件全解析
查看>>
回顾与陈景润讨论歌德巴哈猜想的情景
查看>>
java编写的2048程序
查看>>
解决git clone时报错:The requested URL returned error: 401 Unauthorized while accessing
查看>>
在进程View时的四个构造函数详解
查看>>
C++ 实现把非静态成员函数作为回调函数(非static)(转)
查看>>
Oracle 删除重复行
查看>>
Linq表达式、Lambda表达式你更喜欢哪个?
查看>>
iview select filterable属性使用下拉小bug
查看>>
vue table 固定首列和首行
查看>>
Educational Codeforces Round 64 C. Match Points 【二分思想】
查看>>
mysql安装和基本配置-redhat
查看>>