Config客户端编写
上一篇,讲了config配置,这次讲客户端怎么调用
- 新建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/
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/ 发现,值已经更新了
7.总结
config的动态更新其实并不实用,因为每次配置文件变更,必须调用客户端的刷新链接,才能够动态更新,但是大部分情况,客户端的服务可能非常多,不可能一一调用,因为服务端的本质是一个http请求,所以最优方案依然是实时通过http请求获取最新值。