实现配置文件动态读取的好处不必多说,修改配置文件后不必重启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