3、编写 controller,获取配置中心中的文件属性
@RestController public class ConfigClientController { @Value("${config.info}") private String configInfo; @GetMapping("/info") public String getConfigInfo(){ return configInfo; } }4、浏览器输入地址访问
如果需要获取其它配置文件内容,只需要修改 bootstrap.yml 中的 label、name、profile 即可
存在的问题?当配置中心的配置文件内容发生改动,服务端和客户端是否能够动态的获取?
经测试,服务端可以动态的获取,客户端不能!
因为服务端直接从配置中心获取,而客户端是从上下文环境中获取已加载的属性,配置中心修改后,由于服务没有重启,获取的仍然是之前的属性。
Config 动态刷新对客户端进行修改
1、需要引入 actuator 依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>2、添加如下配置
# 暴露监控端点 management: endpoints: web: exposure: include: "*"3、在 Controller 上添加注解 @RefreshScope
4、刷新服务端后,发送 Post 请求,curl -X POST :3355/actuator/refresh,客户端刷新即可获取最新内容,避免了服务重启
仍然存在的问题?每个微服务都需要发送一次 POST 请求。
如何广播通知?一次通知,处处生效