SpringCloud学习系列之四-----配置中心(Config)使用详解 (2)

我们新建一个springcloud-config-client的项目,用于做读取配置中心的配置。pom依赖还是和配置中心一样,不过需要新增一个配置,用于指定配置的读取。
创建一个bootstrap.properties文件,并添加如下信息:

配置信息:

spring.cloud.config.name=configtest spring.cloud.config.profile=pro spring.cloud.config.label=master spring.cloud.config.discovery.enabled=true spring.cloud.config.discovery.serviceId=springcloud-config-server eureka.client.serviceUrl.defaultZone=http://localhost:8005/eureka/

配置说明:

spring.cloud.config.name: 获取配置文件的名称。

spring.cloud.config.profile: 获取配置的策略。

spring.cloud.config.label:获取配置文件的分支,默认是master。如果是是本地获取的话,则无用。

spring.cloud.config.discovery.enabled: 开启配置信息发现。

spring.cloud.config.discovery.serviceId: 指定配置中心的service-id,便于扩展为高可用配置集群。

eureka.client.serviceUrl.defaultZone: 这个是设置与Eureka Server交互的地址,客户端的查询服务和注册服务都需要依赖这个地址。

:上面这些与spring-cloud相关的属性必须配置在bootstrap.properties中,config部分内容才能被正确加载。因为bootstrap.properties的相关配置会先于application.properties,而bootstrap.properties的加载也是先于application.properties。需要注意的是eureka.client.serviceUrl.defaultZone要配置在bootstrap.properties,不然客户端是无法获取配置中心参数的,会启动失败!

application.properties配置

spring.application.name=springcloud-config-client server.port=9006

配置说明:

spring.application.name: 这个是指定服务名称。

server.port:服务指定的端口。

程序主类代码,和之前的基本一致。代码如下:

代码示例:

@EnableDiscoveryClient @SpringBootApplication public class ConfigClientApplication { public static void main(String[] args) { SpringApplication.run(ConfigClientApplication.class, args); System.out.println("配置中心客户端启动成功!"); } }

为了方便查询,在控制中进行参数的获取,并返回。@Value注解是默认是从application.properties配置文件获取参数,但是这里我们在客户端并没有进行配置,该配置在配置中心服务端,我们只需指定好了配置文件之后即可进行使用。

代码示例:

@RestController public class ClientController { @Value("${word}") private String word; @RequestMapping("/hello") public String index(@RequestParam String name) { return name+","+this.word; } }

到此,客户端项目也就构建完成了。

功能测试

完成如上的工程开发之后,我们来进行测试。

本地测试

首先我们把springcloud-config-server项目的application.properties配置文件添加spring.profiles.active=native配置,注释掉spring.cloud.config.server.git相关的配置,然后在src/main/resources目录下新建一个configtest.properties文件,然后在里面添加一个配置word=hello world。
添加完成之后,我们依次启动springcloud-config-eureka、springcloud-config-server、springcloud-config-client这三个项目。启动成功之前,先看来看看配置中心服务端的配置文件获取,在浏览器输入:

:9005/configtest-1.properties

查看该文件的配置信息。

:配置文件的名称是configtest.properties,但是如果直接该名称的话是获取不到的,因为在配置文件名需要通过-来进行获取,如果配置文件名称没有-,那么添加了-之后,会自动进行匹配搜索。

springcloud config 的URL与配置文件的映射关系如下:

/{application}/{profile}[/{label}] /{application}-{profile}.yml /{label}/{application}-{profile}.yml /{application}-{profile}.properties /{label}/{application}-{profile}.properties

上面的url会映射{application}-{profile}.properties对应的配置文件,{label}对应git上不同的分支,默认为master。

界面返回:

word: hello world

然后调用客户端的接口,查看是否能够获取配置信息。在浏览器上输入:

:9006//hello?name=pancm

界面返回:

pancm,hello world

示例图:

在这里插入图片描述


在这里插入图片描述

Git测试

在完成本地测试之后,我们把这个spring.profiles.active=native配置注释掉,解除spring.cloud.config.server.git相关的注释(账号和密码要填写真实的),然后在git仓库上建立一个config-repo 文件夹,新建configtest-pro.properties、configtest-dev.properties两个配置,这两个的配置分别是word=hello world!!和word=hello world!, 然后和configtest.properties配置文件一起上传到config-repo 文件夹中。

首先在浏览器输入:

:9005/configtest-dev.properties

浏览器返回:

word: hello world!

然后再浏览器输入:

:9005/configtest-pro.properties

浏览器返回:

word: hello world!!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssxsx.html