Springboot 使用@RefreshScope 注解,实现配置文件的动态加载

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Springboot 使用@RefreshScope 注解,实现配置文件的动态加载相关的知识,希望对你有一定的参考价值。

参考技术A 实现配置文件动态读取的好处不必多说,修改配置文件后不必重启Application ,想想就开心。

合格调包侠的必备技能,从Maven仓库引入依赖的Jar包,

搞好配置文件,默认在application.yml /properties 就行,与本功能相关的配置项(采用yml格式)如下:

distributed-id是自定义需要动态部署的配置文件。management:是暴露refresh接口,不加此条配置将无法启用动态加载配置文件的功能(也就是管你理解不理解,别问,加就对了)。

1.编写自定义配置文件的Java对象,一定要在类上加@RefreshScope注解

@data是lombok的注解,别的注解不多说。

2.编写你的conroller ,也一定要加@RefreshScope注解, 不加的话,呵呵,对不起,无法运行。。原因吗---在这 @RefreshScope not working - Spring Boot - Stack Overflow

   我这里是返回配置文件中distributed-id.mechineId的值。

3.到此为止了,简单吧😒。其实的话,第一步也可以直接在Bean的配置中心(也就是@Configuration注解的类)搞一下,效果是一样的。

使用这种写法,就可以不用在配置对象类上加@Component和@RefreshScope。

测试一下啦,启动应用前,将配置文件设置如下:

运行程序后,在浏览器输入你的测试地址,返回如下,是5没错了:

然后找到你编译后文件,修改配置文件的值,注意是 编译后的配置文件     就是下图中灰色文件的位置

修改如下:mechineId修改为4

接下来向 http://localhost:port/actuator/refresh 发送 POST 请求,get请求是无法识别的呦😘,可以看到返回了配置文件中被更改的属性

测试一下,没错了,返回值为4

以上是关于Springboot 使用@RefreshScope 注解,实现配置文件的动态加载的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot.14.SpringBoot使用jsp模板打包成jar

SpringBoot.14.SpringBoot使用jsp模板打包成jar

SpringBoot.14.SpringBoot使用jsp模板打包成jar

SpringBoot.14.SpringBoot使用jsp模板打包成jar

SpringBoot.14.SpringBoot使用jsp模板打包成jar

SpringBoot专栏 -- 搭建第一个SpringBoot项目