Config的客户端使用
在14.2节中,我们已经搭建好一个配置中心,接下来就应该配置客户端 Client,让 Config 运行起来。因此,这一节,将会介绍如何使用 Config,并在最后介绍高可用。
配置客户端
使用以前搭建过的 consumerService 应用配置客户端。首先,需要添加依赖,依赖代码如下所示。
<dependency>
//client端的依赖
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
然后,修改 application.properties 为 bootstrap.properties,代码如下所示。
spring.application.name=consumerService
eureka.client.service-url.defaultZone=http://localhost:8764/eureka/
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.service-id=CONFIG
spring.cloud.config.profile=dev
对上面的配置项做一些说明。首先,bootstrap 是启动项的意思,在启动文件中指明在启动之后再读取的文件。service-id 的意思是应用 ID,enabled 为启动发现启动,分支为 dev。
客户端测试
通过写控制类程序来进行测试,代码如下所示。
package com.cloudtest.eurekaconsumer.controller;
@RestController
public class ConfigTest {
@Value("${env}")
private String env;
@GetMapping("/print")
public String print(){
return env;
}
}
1) 测试1
先将 bootstrap.properties 中的配置项设置为 dev,配置项如下所示。
spring.cloud.config.profile=dev
然后,访问链接 http://localhost:8070/print ,如图14.14所示。

2) 测试2
再将 bootstrap.properties 中的配置项设置为 test,配置项如下所示。
spring.cloud.config.profile=test
然后,访问链接 http://localhost:8070/print ,如图14.15所示。

通过两次测试,我们可以发现,只需要简单地切换就可以迅速地使用新的配置文件了,在程序开发中,简化了开发过程。
3) 测试3
下面是刚刚测试1的配置项。
spring.application.name=consumerService
eureka.client.service-url.defaultZone=http://localhost:8764/eureka/
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.service-id=CONFIG
spring.cloud.config.profile=dev
在上面可以看到,有 defaultZone 配置,如果这个配置项不写,直接放在远程 Git 中,启动项目时会报错。
因为在启动时,需要连接 Eureka,然后获取在 Eureka 上的 service-id,读取环境和应用名才能获取配置文件上的内容。所以,如果这里不写 defaultZone 就会报错,项目不能启动。但是如果不写是否一定会报错呢?其实不是。下面是不带 defaultZone 时出现的日志。
Request execution error.
endpoint=DefaultEndpoint{ serviceUrl=http://localhost:8761/eureka/}
这里说明,将会默认加载 8761 端口。如果我们的 Eureka 是默认的 8761,则可以正确地访问到配置文件。
Config的高可用性
这一小节本应该放到服务端来介绍的,但是考虑到需要在客户端进行验证,所以将 Config 的高可用放在这里进行介绍。这里的高可用部署起来比较方便。首先,将原本的应用进行复制,然后修改端口号,防止冲突,如图14.16所示。

在上图中,使用的应用端口号为 8097,原 Config 应用使用的端口号是 8096。然后,启动两个 Config 应用,如图14.17所示。

下面进行测试。启动 consumerService 的客户端(configclient 端),可以看到日志如下。
Fetching config from server at : http://192.168.220.1:8097/
停止应用,然后重新启动,可以看到日志如下。
Fetching config from server at : http://192.168.220.1:8096/
这说明 Config 的高可用也是负载均衡的。