上篇介绍了spring cloud config服务器,本篇介绍客户端。客户端主要是从config服务器获取配置信息。
代码示例
首先创建一个Maven项目,在pom.xml文件中添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
增加一个Controller,用于测试请求:
@RestController
public class IndexController { @Value("${profile}")
private String profile; @RequestMapping("/profile")
public String getProfile() {
return profile;
} }
配置文件:bootstrap.yml
spring:
application:
name: config-client
cloud:
config:
uri: http://localhost:18083 #更改配置服务器的位置,默认地址是http://localhost:8888
profile: test #对应spring.profiles.active
label: master #分支名。当配置服务器是git时,默认是master
配置文件:application.yml
server:
port:
启动服务,可以看到会请求http://localhost:18083,即从config server获取配置信息。也会打印出environment对象的值,即name(项目名称)、profiles(环境名称)、label(分支名称)。如下所示:
测试工作:
请求路径:http://localhost:18084/profile,测试结果:
如果要获取config-client-dev.yml文件中的内容,只需要改spring.cloud.config.profile: dev就行
配置内容的热加载:
如果不重启应用,能够做到配置的刷新吗?答案显然是可以的。
1、增加actuator依赖,暴露/refresh端点:
<dependency>
<!-- 监控管理(如:状态页和健康指标) -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2、在上面的IndexController中增加@RefreshScope注解:
@RestController
@RefreshScope // 这边的@RefreshScope注解不能少,否则即使调用/refresh,配置也不会刷新
public class IndexController { @Value("${profile}")
private String profile; @RequestMapping("/profile")
public String getProfile() {
return profile;
} }
3、我们将config-client-test.yml中值改为
profile: abcd
并提交到git仓库
4、使用Postman(也可以使用其它工具)请求:
POST http://localhost:18084/refresh
请求结果是:
[
"config.client.version",
"profile"
]
最后再次访问http://localhost:18084/profile,将会看到返回值是 abcd,说明配置已刷新。配置自动刷新可参考:使用spring cloud bus自动刷新配置
遇到的坑:如果spring cloud使用的版本是 Edgware 以及之前,需要关掉actuator安全,把 manage.security.enabled 设为false
总结
1、spring cloud配置加载顺序: 加载bootstrap.* 配置 --> 连接config-server,加载远程配置 --> 加载application.* 配置
2、远程配置优先级高于本地配置,application.*会覆盖bootstrap.*中的配置
3、如果在远程配置中找不到匹配配置文件,则默认找远程的application.*文件
4、如果config客户端不配置项目名称,则会使用默认的项目名称(即application),也会查找远程的application.*文件
5、一般将不太会改变的配置放在bootstrap.*文件中,如spring.application.name
spring cloud config客户端的更多相关文章
-
Spring Cloud官方文档中文版-Spring Cloud Config(下)-客户端等
官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#_serving_alternative_formats 文中例子我做了 ...
-
Spring Cloud官方文档中文版-Spring Cloud Config(上)
官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#spring-cloud-feign 文中例子我做了一些测试在:http ...
-
Spring Cloud Config(配置中心)
每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code 一.简介 Spring Cloud Config为分布式系统中的外部配置提供服务器和客 ...
-
Spring Cloud Config中文文档
https://springcloud.cc/spring-cloud-config.html 目录 快速开始 客户端使用 Spring Cloud Config服务器 环境库 健康指标 安全 加密和 ...
-
Spring Cloud Config 自动刷新所有节点
全局刷新 详细参考:<Sprin Cloud 与 Docker 微服务架构实战>p160-9.9.2节 1.使用Spring Cloud Config 客户端时,可以使用 /refresh ...
-
spring cloud config配置
参考: http://www.ityouknow.com/springcloud/2017/05/22/springcloud-config-git.html http://www.ityouknow ...
-
Spring Cloud Config 实现配置中心,看这一篇就够了
Spring Cloud Config 是 Spring Cloud 家族中最早的配置中心,虽然后来又发布了 Consul 可以代替配置中心功能,但是 Config 依然适用于 Spring Clou ...
-
Spring Cloud官方文档中文版-Spring Cloud Config(上)-服务端(配置中心)
官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#spring-cloud-feign 文中例子我做了一些测试在:http ...
-
Spring Cloud Config 配置中心实践过程中,你需要了解这些细节!
本文导读: Spring Cloud Config 基本概念 Spring Cloud Config 客户端加载流程 Spring Cloud Config 基于消息总线配置 Spring Cloud ...
随机推荐
-
yii2搭建完美后台并实现rbac权限控制实例教程
1.安装yii2 未安装的请参考yii2史上最简单式安装教程,没有之一 或者参考yii2实战教程之详细安装步骤 已安装的请继续看下一步操作 2.配置数据库 2.1 配置数据库 修改common/con ...
-
python Django 学习笔记(三)—— 模版的使用
模版基本介绍 模板是一个文本,用于分离文档的表现形式和内容. 模板定义了占位符以及各种用于规范文档该如何显示的各部分基本逻辑(模板标签). 模板通常用于产生HTML,但是Django的模板也能产生任何 ...
-
vueJS 获取后台数据 绑定data
//vue 环境安装http://blog.****.net/u013182762/article/details/53021374 一开始使用安装环境配置一些东西 ,后来发现太麻烦了 . 直接CD ...
-
C#内存管理解析
前言:对于很多的C#程序员来说,经常会很少去关注其内存的释放,他们认为C#带有强大的垃圾回收机制,所有不愿意去考虑这方面的事情,其实不尽然,很多时候我们都需要考虑C#内存的管理问题,否则会很容易造成内 ...
-
开发一个项目之ES2015+
变量的解构赋值 任何部署了 Iterator 的对象都可 for of 循环(数组.Set.Map.某些类似数组的对象(arguments对象.DOM NodeList 对象).Generator 对 ...
-
easyui-tab标签
一. 加载方式 //class 加载方式<div id="box" class="easyui-tabs" style="width:500px ...
-
新手vue构建单页面应用实例
本人写的小程序,功能还在完善中,欢迎扫一扫提出宝贵意见! 步骤: 1.使用vue-cli创建项目2.使用vue-router实现单页路由3.用vuex管理我们的数据流4.使用vue-resource请 ...
-
Vistual Studio Community 2017 账号的许可证过期,*网激活方法
方法: 1.外网电脑打开Vistual Studio Community2017 2.在许可证过期弹窗中登陆账号即可自动下载许可证完成激活 许可证下载路径(C:\用户\user\Ap ...
-
Delphi Try Except 实例
//判断单位转换率 try um_rate := vp_mstr.F('vp_um_rate_d').AsFloat / vp_mstr.F('vp_um_rate_m').AsFloat; then ...
-
vue2.0 代码功能片段
1.代码片段截取 checkAll: function(flag){ this.checkAllFlag = flag; this.productList.forEach(function(value ...