前言

在以往的应用中,如果要更改应用的配置,要让配置生效必须重启应用程序。在Spring Cloud Config中我们可以刷新配置属性而不用重启应用。

这1节说明在Spring Cloud Config如何手动刷新配置属性。

手动刷新配置属性

1.需要引入spring boot-actuator依赖(用到/refresh端点)

1
2
3
4
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2.在Bean上增加@RefreshScope注解

比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
@Controller
@RequestMapping("/user")
@RefreshScope
public class UserController {
    @Value("${my.custom.message}")
    private String customeMessage;
    
    @GetMapping("/customMsg")
    @ResponseBody
    public String getCustomeMessage() {
        return this.customeMessage;
    }
}

Ok,准备工作完毕!

先来看看my.custom.message原来的配置

现在我们修改git仓库中配置文件的my.custom.message的配置项。

我们将value修改为:

1
my.custom.message=Hello,This message is changed!!!

现在通过/refresh刷新配置属性。

返回结果表示my.custom.message配置有更新。

现在在访问/user/customeMsg

可以看到,已经使用了刚刚更新的配置。

注意

1.默认spring-boot-acturator开启了安全认证,这里作为演示将其关闭(management.security.enabled=false)。

2.如果有很多个微服务,使用手动刷新配置的方式就不太合适了。