初探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中配置配置服务器的地址和 ...
随机推荐
- SoapUI Pro Project Solution Collection –Easy develop Groovy Script to improve SoapUI ability
As you know the groovy script and java script language is the soapui supported .but unfortunately So ...
- UnDistracted for Mac(集中注意力辅助工具)破解版安装
1.软件简介 UnDistracted 是 macOS 系统上一款可以帮助我们集中注意力的辅助工具,让我们在 mac 电脑上工作更加集中注意力,提高工作效率,隐藏所有文件或是文件夹窗口.隐藏所有 ...
- Effective Java 第三版——58. for-each循环优于传统for循环
Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...
- input框触发回车事件
window.event只能在IE下运行,不能在firefox下运行,这是因为firefox的event只能在事件发生的现场使用. 在firefox里直接调用event对象会报undefined. ...
- 远程桌面中Tab键不能补全的解决办法
我们曾在之前的一篇文章中介绍了windows远程连接ubuntu的方法,在成功登陆远程桌面环境之后,发现在终端中Tab键不能自动补齐(但是Ctrl +Tab 可以用,但是需要按下组合键才能补全的话,时 ...
- Mac安装crfpp
Mac安装crfpp 步骤 git clone https://github.com/taku910/crfpp.git ./configure make sudo make install cd p ...
- 设置全局git忽略文件 gitconfig
cat ~/.gitconfig [user] email = yuanhuikai@liquidnetwork.com name = yuanhuikai[core] excludesfile = ...
- 读“40 分,60 分,90 分”
原文链接: http://mp.weixin.qq.com/s?__biz=MzA5MjYyNzY1OQ==&mid=2650901947&idx=1&sn=89af64d3b ...
- 红米3 MoKee 7.1.2_r36 自编译版/去魔趣中心、宙斯盾/息屏禁止刷新UI 2018年5月5日更新
一.ROM简介 MoKee是基于CM二次修改的ROM,本地化系统:农历.归属地.OMS框架.状态栏显示网速/时间显秒等等. 二.ROM自编译DIY简介 1.Lawnchair桌面. 2.Via谷歌版浏 ...
- 接口app 接口中上传 图片
/** * @Method base64图片上传 * @author 黄国金 * return array * date 2016-1-10 */function saveBase64Image($b ...