初探Spring Cloud Config
Spring Cloud Config提供了分布式系统中配置功能的服务端与客户端支持。对于不同环境的应用程序它的服务端提供了一种中心化的配置管理方式。并且其不仅适用于Spring的应用程序,其它语言开发的程序同样能够使用(这点很重要)。
环境要求
- 首先需要安装JDK1.8或以上版本
- IDE可以选用Spring Tool Suite(STS)或者IntelliJ IDEA,本文选用STS作为例子
服务端
在文件菜单,点击新建Spring Starter Project。

在输入工程名(这里是configuration-service)后选择下一步(Next),在依赖项中选中Config Server。

之后,点击Finish,即可完成工程的创建。
接着,在ConfigurationServiceApplication类上添加@EnableConfigServer注解。
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
@EnableConfigServer
@SpringBootApplication
public class ConfigurationServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigurationServiceApplication.class, args);
}
}
最后一步,在application.properties文件里配置可用的端口及用于保存服务端配置的仓库地址。
server.port=9555
#spring.profiles.active=native
#spring.cloud.config.server.native.searchLocations=file:///${USERPROFILE}/Desktop/config
spring.cloud.config.server.git.uri=file:///${USERPROFILE}/Desktop/config
Spring Cloud Config中最常用的是git仓库,这种场景下通过对spring.cloud.config.server.git.uri指定具体路径即可达成配置目的。
当然也可以不用git仓库,比如使用单纯的文件管理。
这时就需要同时使用spring.profiles.active=native及spring.cloud.config.server.native.searchLocations={配置文件目录路径}这两条配置项。
做为例子,在file:///${USERPROFILE}/Desktop/config目录下建立了一个application.properties文件,里面加入一条配置message=Hello World!。
启动这个应用,一个Spring Cloud Server便产生了。
测试下其是否正常工作,可以在浏览器中输入http://localhost:9555/application/dev地址查看。如果是类似下列的结果,说明是正常的。
{"name":"application","profiles":["dev"],"label":null,"version":"c0f022755482d4a98f66dc19c8c4e0af512dc4f2","state":null,"propertySources":[{"name":"file:///C:\\Users\\Ken/Desktop/config/application.properties","source":{"message":"Hello World!"}}]}
客户端
同样是选择新建Spring Starter Project。但这次在依赖项中选择Config Client。

完成创建后,再在pom.xml中追加两个依赖。
<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>
接着在ConfigurationClientApplication文件里加入一个Controller。
package com.example.demo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
public class ConfigurationClientApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigurationClientApplication.class, args);
}
}
@RefreshScope
@RestController
class MessageRestController {
@Value("${message:Hello default}")
private String message;
@RequestMapping("/message")
String getMessage() {
return this.message;
}
}
如果此时没有运行Config Server而是单独运行Config Client的话,可以看到以下的结果:

说明程序中获取的是代码里默认的配置项。
下面,开始打通与Config Server的连接。
在Config Client的application.properties文件配置应用程序启动端口server.port=9666。
再在相同resources目录下新建一个bootstrap.propertiess文件,加入与Config Server关联配置。
spring.cloud.config.uri=http://localhost:9555
然后,先启动Config Server应用程序,再启动Config Client应用程序。

结果说明Config Client成功从Config Server获得配置内容。
接下来,尝试将配置仓库目录下application.properties文件内的配置项改成message=Hello World, Spring Cloud!。
刷新http://localhost:9666/message页面。结果未做变化。这是因为默认场景下,Config Client只在启动时向Config Server获取一次配置。
先把message配置改回message=Hello World!。
在Config Client的application.properties中添加management.endpoints.web.exposure.include=*配置。
重新启动Config Client。
再次将message配置改成message=Hello World, Spring Cloud!。
然后在命令行中执行curl localhost:9666/actuator/refresh -d {} -H "Content-Type: application/json"更新配置。
刷新页面后可以看到预期的结果:

初探Spring Cloud Config的更多相关文章
- spring cloud config 入门
简介 Spring cloud config 分为两部分 server client config-server 配置服务端,服务管理配置信息 config-client 客户端,客户端调用serve ...
- Spring Cloud Config
Spring Cloud Config provides server and client-side support for externalized configuration in a dist ...
- Spring Cloud官方文档中文版-Spring Cloud Config(上)
官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#spring-cloud-feign 文中例子我做了一些测试在:http ...
- Spring Cloud官方文档中文版-Spring Cloud Config(下)-客户端等
官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#_serving_alternative_formats 文中例子我做了 ...
- SpringCloud的配置管理:Spring Cloud Config
演示如何使用ConfigServer提供统一的参数配置服务 ###################################################################一.概 ...
- 搭建spring cloud config
很久没更新了,因为不是专职研究spring cloud,因此更新速度得看工作强度大不大,每天能抽出的时间不多,如果更新太慢了,并且有小伙伴看的话,请见谅了. Spring Cloud简介 Spring ...
- Spring Cloud Config - RSA简介以及使用RSA加密配置文件
简介 RSA非对称加密有着非常强大的安全性,HTTPS的SSL加密就是使用这种方法进行HTTPS请求加密传输的.因为RSA算法会涉及Private Key和Public Key分别用来加密和解密,所以 ...
- Spring Cloud Config 分布式配置中心使用教程
一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config ...
- 【spring实战第五版遇到的坑】第14章spring.cloud.config.uri和token配置项无效
本文使用的Spring Boot版本为:2.1.4.RELEASE Spring Cloud版本为:Greenwich.SR1 按照书上的做法,在application.yml中配置配置服务器的地址和 ...
随机推荐
- 【翻译自mos文章】在10g中,当发生ORA-00020时,sqlplus登陆会报“connected to an idle instance”
在10g中.当发生ORA-00020时,sqlplus登陆会报"connected to an idle instance" 来源于: Sqlplus Logon Reports ...
- 【ShoppingPeeker】-基于Webkit内核的爬虫蜘蛛引擎 ShoppingWebCrawler的姊妹篇-可视化任务Web管理
ShoppingPeeker 这个项目是蜘蛛项目的可视化任务站点. 项目github地址:ShoppingPeeker 开发语言:C# 开发工具:Visual Studio 2017 +.Net Co ...
- 如何在页面中获取到ModelAndView绑定的值
以下内容转自:https://blog.csdn.net/qq_16071145/article/details/51341052 springMVC中通过ModelAndView进行后台与页面的数据 ...
- unix缓冲
目的:尽量减少read,write调用的次数. 标准IO提供3种IO: 1.全缓冲.在填满IO缓冲区后才进行实际的IO操作. 2.行缓冲.当输入和输出遇到换行符时,执行IO操作.(设计终端) 3.不带 ...
- netstat使用--10个常用的命令
1.列出所有的端口 netstat -a 列出TCP协议的端口 netstat -at UDP协议的端口 netstat -au 2.列出处于监听状态的socket netstat - ...
- [转载]js正则表达式/replace替换变量方法
原文地址:http://www.blogjava.net/pingpang/archive/2012/08/12/385342.html JavaScript正则实战(会根据最近写的不断更新) 1.j ...
- js 学习
{% load static %} <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- 【经验分享】我经历的几门MOOC
这半年来,从1月初到6月底,在coursera上注册了4们有关数据分析/挖掘的课程.这些课程都是利用业余时间学习,每周基本上花5个小时左右.其中通过了3门,注销了一门.感觉还是学到了一些东西. 第一门 ...
- ElasticStack系列之九 & master、data 和 client 节点
在生产环境下,如果不修改elasticsearch节点的角色信息,在高数据量,高并发的场景下集群容易出现脑裂等问题. 默认情况下,elasticsearch 集群中每个节点都有成为主节点的资格,也都存 ...
- Goldengate:ERROR 180 encountered commit SCN that is not greater than the highest SCN already processed
How to recover from Extract ERROR 180 encountered commit SCN that is not greater than the highest SC ...