Spring Cloud Config
Spring Cloud Config provides server and client-side support for externalized configuration in a distributed system.
Spring Cloud Config Quick Start Page
1. Preparation
Install Spring boot by following Spring boot getting started
Linux for example:
Install Groovy Environment Manager$ gvm install springboot$ spring --versionSpring Boot v1.2.5.RELEASE
A simple sample for Spring boot as below:
package hello;import org.springframework.boot.*;import org.springframework.boot.autoconfigure.*;import org.springframework.stereotype.*;import org.springframework.web.bind.annotation.*;@Controller@EnableAutoConfigurationpublic class SampleController {@RequestMapping("/")@ResponseBodyString home() {return "Hello World!";}public static void main(String[] args) throws Exception {SpringApplication.run(SampleController.class, args);}}
Git Clone the Sample Code of Srping Cloud Config
https://github.com/spring-cloud/spring-cloud-config/tree/1.0.2.RELEASE
.
├── docs
├── Guardfile
├── pom.xml
├── README.adoc
├── sample.groovy
├── spring-cloud-config-client
├── spring-cloud-config-sample
└── spring-cloud-config-server
2. The basic architecture of Spring Cloud Config

Setup Tips
- Start Config Server first
- Then start client app.
- After Config Server is down, Cient still works.
- Restarting Config Server will re-clone git properties
- use POST method instead of GET for curl command above
Setup Config Server
1. Start and visit config server
$ cd spring-cloud-config-server$ mvn spring-boot:run$ curl localhost:8888/foo/default$ curl localhost:8888/foo/development{"name":"development","label":"master","propertySources":[{"name":"https://github.com/scratches/config-repo/foo-development.properties","source":{"bar":"spam"}}, # The priority of foo-development.properties is higher than foo.properties{"name":"https://github.com/scratches/config-repo/foo.properties","source":{"foo":"bar"}}]}
localhost:8888/foo/development is following this convention:
/{application}/{profile}[/{label}]
application: foo
profile: development (environment like develop/qa/release/production)
label: "master" (master branch by default)

Explain more below.
2. Configurations in config server
/spring-cloud-config-server$ tree.├── pom.xml├── src│ ├── main│ │ ├── java│ │ └── resources│ │ ├── configserver.yml
The content of the configserver.yml
info:component: Config Serverspring:application:name: configserverjmx:default_domain: cloud.config.servercloud:config:server:git:uri: https://github.com/spring-cloud-samples/config-reporepos:- patterns: multi-repo-demo-*uri: https://github.com/spring-cloud-samples/config-reposerver:port: 8888management:context_path: /admin
The content of the git repository https://github.com/spring-cloud-samples/config-repo:
.├── application.yml├── bar.properties├── configserver.yml├── eureka.yml├── foo-development.properties├── foo.properties├── processor.yml├── samplebackendservice-development.properties├── samplebackendservice.properties├── samplefrontendservice.properties├── stores.yml└── zuul.properties
Will be cloned to /tmp/config-repo-{id} in Linux
localhost:8888/foo/development refer to foo-development.properties
localhost:8888/foo/default refer to foo.properties
Updating git repostiory will reflect to localhost:8888 like /tmp/config-repo-{id}
3. Client Side Usage
Simple structure for client side.
├── pom.xml├── src│ ├── main│ │ ├── java│ │ │ └── sample│ │ │ └── Application.java│ │ └── resources│ │ ├── application.yml│ │ └── bootstrap.yml
$ cd spring-cloud-config-sample$ mvn spring-boot:run
spring-cloud-config-sample/pom.xml
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.2.3.RELEASE</version><relativePath /> <!-- lookup parent from repository --></parent><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-parent</artifactId><version>1.0.1.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build><!-- repositories also needed for snapshots and milestones -->
Main Client class:
spring-cloud-config-sample/src/main/java/sample/Application.java
@Configuration@EnableAutoConfigurationpublic class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}}
spring-cloud-config-sample/src/main/resources/bootstrap.yml
spring:application:name: barcloud:config:env: default # optionallabel: master # optionaluri: http://localhost:${config.port:8888}
where it specifies application name bar and the uri of spring cloud config server.
$ curl localhost:8080/env{"profiles":[],"configService:https://github.com/scratches/config-repo/bar.properties":{"foo":"bar"},"servletContextInitParams":{},"systemProperties":{...},...}
Usage:
1. Get/Refresh properties (Fetch value on request API call)
$ curl localhost:8080/env/foobar$ vi /tmp/config-repo-{id}/bar.properties.. change value of "bars"$ curl -X POST localhost:8080/refresh["foo"]$ curl localhost:8080/env/foobars
2. Usage of ClientAppClass
package demo;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.context.annotation.ComponentScan;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@EnableAutoConfiguration@ComponentScan@RestControllerpublic class ClientApp {@Value("${bar:World!}")String bar;@RequestMapping("/")String hello() {return "Hello " + bar + "!";}public static void main(String[] args) {SpringApplication.run(ClientApp.class, args);}}
You can also see a single property.
$ curl http://localhost:8080/env/bar
123456
When you access to the controller,
$ curl http://localhost:8080
Hello 123456!
you can find the property on Config Server is injected.
See more usage samples here: http://qiita.com/making@github/items/704d8e254e03c5cce546
Spring Cloud Config的更多相关文章
- spring cloud config 入门
简介 Spring cloud config 分为两部分 server client config-server 配置服务端,服务管理配置信息 config-client 客户端,客户端调用serve ...
- 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中配置配置服务器的地址和 ...
- .NET Core微服务之基于Steeltoe使用Spring Cloud Config统一管理配置
Tip: 此篇已加入.NET Core微服务基础系列文章索引 => Steeltoe目录快速导航: 1. 基于Steeltoe使用Spring Cloud Eureka 2. 基于Steelt ...
随机推荐
- hdu 4779 Tower Defense 2013杭州现场赛
/** 题意: 有两种塔,重塔,轻塔.每种塔,能攻击他所在的一行和他所在的一列, 轻塔不 能被攻击,而重塔可以被至多一个塔攻击,也就是说重塔只能被重塔攻击.在一个n*m 的矩阵中,最少放一个塔,可放多 ...
- NSData 数据转换
NSData,数据,当我们需要把一些信息写入到文件里或发送到网络上,我们需要把这些数据转换下,变成纯粹的0.1字符流 数组转 NSData NSData *GLYtime = [NSKeyedArch ...
- 转: seajs手册与文档之 -- 快速参考 ( ~~useful )
目录 快速参考 seajs.use seajs.config define require require.async exports module.exports 快速参考 该页面列举了 SeaJS ...
- vs2010根据字符串内容添加断点
在vs中我们可以直接用表达式.数值型比较直接用操作符即可. 如i==2,i<2; 但是字符型比较呢? 加入我们有一个名为string的变量,定义如下: char *string="Tw ...
- [置顶] 我的GB28181标准开发里程碑——基于eXosip的IPC端与SPVMN注册成功
昨天编译搭建好eXosip的开发环境后,今天完成了SIP注册功能,里程碑一战啊!加油加油,成功就在眼前! 今天基于eXosip做了一个IPC客户端,成功与公安部的SPVMN视频监控联网调测软件自测工具 ...
- Treap的读书笔记2
近期開始了自己高级数据结构之旅,在这次旅行中.我将持续把一些高级的数据结构从理论到编码都过一遍,同一时候通过博客形式分享出来.希望大家指出不足之处! 二叉排序树是一种动态排序的数据结构.支持插入.删除 ...
- c++特殊函数
C++中NULL不能写作小写,NULL的值为零,也可以写作0 在自己写的复制构造函数中不改变原对象,所以传进来的参数可以设为const类型的,这样可以保证传进来的对象不被改变 比如A(const A ...
- POJ1985 DFS【STL__vector_的应用】
vector 向量 相当于一个数组 在内存中分配一块连续的内存空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacit ...
- 432B - Football Kit
解题思路: 暴力绝对TLE 一个队伍穿主场球衣的次数 = 这个队伍的客场球衣颜色与其他队主场球衣颜色起冲突的次数 + (n - 1) #include <stdio.h> #include ...
- 利用SolrJ操作solr API完成index操作
使用SolrJ操作Solr会比利用httpClient来操作Solr要简单.SolrJ是封装了httpClient方法,来操作solr的API的.SolrJ底层还是通过使用httpClient中的方法 ...