欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Springcloud之config组件手动刷新

程序员文章站 2022-06-12 22:50:59
...

简介:

有的时候,我们希望不重新程序服务就可以实时的获取到远程工具的文件的修改值,这时候就需要手动更新机制了,如不会config组件的配置的可以参考我的上篇博文:https://blog.csdn.net/qq_43222167/article/details/105951348
1.首先给远程服务端的文件添加一个属性值,用来测试,我这里添加的是profile属性

profile: one

2.在你配置了config-client的项目中添加jar包,按我的上篇博文来的话就是provider项目

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

3.在配置文件bootstrap.yml中配置属性,取消SpringBoot的验证:

management:
  security:
    enabled: false

4.在此项目中创建一个controller类,进行测试

package com.jbit.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RefreshScope	//配置自动刷新 
public class OrderController {

    @Value("${profile}")
    private String profile;

    @RequestMapping("t")
    public String test(){
        System.out.println(profile);
        return "success";
    }
}

进行测试,首先访问这个请求,我这里是localhost:8071/t
Springcloud之config组件手动刷新
结果输出one,然后改变码云中的profile的属性值,把one改成two,继续访问请求
Springcloud之config组件手动刷新
结果:
Springcloud之config组件手动刷新
现在进行手动刷新,访问请求localhost:8071/refresh,注意是post请求
Springcloud之config组件手动刷新
继续访问localhost:8071/t
Springcloud之config组件手动刷新
由此发现,值已经获取到修改后的,这里有个问题,不知道为什么localhost:8071/refresh访问一遍后再访问localhost:8071/t会报错,localhost:8071/refresh连着访问两遍再访问localhost:8071/t就得出值来了