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=nativespring.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的更多相关文章

  1. spring cloud config 入门

    简介 Spring cloud config 分为两部分 server client config-server 配置服务端,服务管理配置信息 config-client 客户端,客户端调用serve ...

  2. Spring Cloud Config

    Spring Cloud Config provides server and client-side support for externalized configuration in a dist ...

  3. Spring Cloud官方文档中文版-Spring Cloud Config(上)

    官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#spring-cloud-feign 文中例子我做了一些测试在:http ...

  4. Spring Cloud官方文档中文版-Spring Cloud Config(下)-客户端等

    官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#_serving_alternative_formats 文中例子我做了 ...

  5. SpringCloud的配置管理:Spring Cloud Config

    演示如何使用ConfigServer提供统一的参数配置服务 ###################################################################一.概 ...

  6. 搭建spring cloud config

    很久没更新了,因为不是专职研究spring cloud,因此更新速度得看工作强度大不大,每天能抽出的时间不多,如果更新太慢了,并且有小伙伴看的话,请见谅了. Spring Cloud简介 Spring ...

  7. Spring Cloud Config - RSA简介以及使用RSA加密配置文件

    简介 RSA非对称加密有着非常强大的安全性,HTTPS的SSL加密就是使用这种方法进行HTTPS请求加密传输的.因为RSA算法会涉及Private Key和Public Key分别用来加密和解密,所以 ...

  8. Spring Cloud Config 分布式配置中心使用教程

    一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config ...

  9. 【spring实战第五版遇到的坑】第14章spring.cloud.config.uri和token配置项无效

    本文使用的Spring Boot版本为:2.1.4.RELEASE Spring Cloud版本为:Greenwich.SR1 按照书上的做法,在application.yml中配置配置服务器的地址和 ...

随机推荐

  1. 解锁scott账户方法

    装完了数据库,忘了给scott账户解锁.这时可以在sql plus工具里,也可以在控制台通过命令行给scott账户解锁. 在第一种情况下,以system账户+自己安装时设置的密码,登录SQL Plus ...

  2. 一起SQL引发OOM的解决思路与过程(转载)

    在TOMCAT WEB程序的运行过程中,突然触发了内存溢出错误,检查Tomcat的localhost日志,找到如下信息: java.lang.OutOfMemoryError: Java heap s ...

  3. input框触发回车事件

    window.event只能在IE下运行,不能在firefox下运行,这是因为firefox的event只能在事件发生的现场使用.   在firefox里直接调用event对象会报undefined. ...

  4. iOS中如何创建一个滑出式导航面板(1)

    本文将介绍如何创建类似Facebook和Path iOS程序中的滑出式导航面板. 向右滑动 滑出式设计模式可以让开发者在程序中添加常用的导航功能,又不会浪费屏幕上宝贵的空间.用户可以在任意时间滑出导航 ...

  5. 【Android】Android设计准则

    准则 下面的这些设计准则是为了让Android的用户体验团队保持用户最佳的体验而发明设计的. 把他们融合到你的创造力中,作为你的设计理念,而不是有意地去使用. 吸引我 用惊奇的方式来取悦我 一个漂亮的 ...

  6. 【iCore4 双核心板_ARM】例程九:ADC实验——电源监控

    实验原理: STM32内部集成三个12位ADC,iCore1S的所有电源经过电阻分压或者直接 接入STM32的ADC的输出通道内,输入电流经过高端电流检测芯片ZXCT1009F 输入到ADC的输入通道 ...

  7. Asp.net Daily Build by MsBuild

    :: 目录结构:: +GW.Point.BLL --dir dll:: +GW.Point.IBLL --dir dll:: +GW.Point.DAL --dir dll:: +GW.Point.I ...

  8. Java知多少(44)异常类型

    所有异常类型都是内置类Throwable的子类.因此,Throwable在异常类层次结构的顶层.紧接着Throwable下面的是两个把异常分成两个不同分支的子类.一个分支是Exception. 该类用 ...

  9. 【转】WPF自定义控件与样式(3)-TextBox & RichTextBox & PasswordBox样式、水印、Label标签、功能扩展

    一.前言.预览 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等. 本文主要是对文本输入控件进行样式开发,及相关扩展功能开发,主要内容包括: 基本文 ...

  10. Android 数据库 大量插入 事务开启

    对比在Android中批量插入数据的3中方式对比(各插入1W条数据所花费的时间): 1. 一个一个插入 publicstaticboolean insert(SQLiteOpenHelper open ...