SpringCloud系列教程(6)-- Config客户端调用

时间:2022-09-01 08:44:56

Config客户端编写

上一篇,讲了config配置,这次讲客户端怎么调用

  1. 新建cloud-config-client 客户端项目,pom引入相关依赖如下:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2.新建测试类GlobalController.java 代码如下

@Controller
public class GlobalController {


@Value("${foo}")//将foo值注入
private String foo;

@ResponseBody
@RequestMapping("/")
public String home() {
return foo;
}

}

3.配置 bootstrap.properties ,切记客户端的配置是bootstrap.properties
因为bootstrap.properties 载入的优先级要比 application.properties 要高,配置代码如下:

spring.application.name=cloud-client
spring.cloud.config.label=master
spring.cloud.config.profile=test
spring.cloud.config.uri= http://127.0.0.1:8082/
server.port=8083
management.security.enabled=false

4.分别启动cloud-config-server ,cloud-config-client ,访问 http://127.0.0.1:8083/
SpringCloud系列教程(6)-- Config客户端调用

5.项目启动中,我们变更下cloud-client-test.properties中的内容变更并提交:

foo=this is new test properties 

重新刷新http://127.0.0.1:8083/ 发现依然显示原来的内容
怎么做到动态更新呢?

6.在GlobalController.java 上新增 @RefreshScope注解,重新启动访问,然后在线变更
cloud-client-test.properties 后,我们调用
http://127.0.0.1:8083/refresh
刷新属性配置这是客户端URL哦,而且这是POST请求
重新刷新 http://127.0.0.1:8083/ 发现,值已经更新了
SpringCloud系列教程(6)-- Config客户端调用

7.总结
config的动态更新其实并不实用,因为每次配置文件变更,必须调用客户端的刷新链接,才能够动态更新,但是大部分情况,客户端的服务可能非常多,不可能一一调用,因为服务端的本质是一个http请求,所以最优方案依然是实时通过http请求获取最新值。

戳我下载示例代码