文档章节

springboot搭建分布式配置中心(二):客户端

HGMrWang
 HGMrWang
发布于 2017/09/01 10:21
字数 729
阅读 38
收藏 0

创建客户端

  • 使用springboot创建一个客户端,例如我创建的工程名称叫做config-client(随便命名),如图:

  • 添加pom.xml依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.wangxh</groupId>
	<artifactId>config-client</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>config-client</name>
	<description>Demo project for Spring Boot</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.6.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<spring-cloud.version>Dalston.SR3</spring-cloud.version>
	</properties>

	<dependencies>

		<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>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring-cloud.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

 

  • 在bootstrap.yml文件中指定分布式配置中心的地址

bootstrap.yml:

# 
spring:
  application:
    name: wangxh
  cloud:
    config:
      uri: http://localhost:8000/
      profile: prod
#      label: master

这里的spring.application.name是wangxh,那么对应上一篇中在git仓库中配置那几个文件名称要保持一样。

uri:是自己搭建的配置中心的访问地址;

profile:是git仓库中以wangxh开头的dev|prod|test| 这几个文件;

label:是这些文件所在的分支,默认是master分支。

补充:

如果有另外一个工程也要使用配置中心,假如这个工程名称(spring.application.name)叫:sms

那么就可以在git仓库中新增对应的以下几个基本配置文件:

sms-dev.yml

sms-prod.yml

sms-test.yml

 

验证

先启动配置中心config-server ,这是springboot搭建分布式配置中心(一)搭建的工程。

再启动config-client

创建一个控制器,打印出tag的值,注:tag在每个配置文件中都有,并且值不一样,就是为了标记客户端正确加载了不同的配置文件。

@RestController
public class HelloController {


    @Value("${tag}")
    private String tag;

    @PostConstruct
    public String getTag() {
        System.out.println(tag);
         return "hello:"+tag;
    }

    @GetMapping("tag")
    public String showTag(){
        return tag;
    }
}

在浏览器访问:http://localhost/tag

此时在config-client的bootstrap.yml如下(注意profile):

# 
spring:
  application:
    name: wangxh
  cloud:
    config:
      uri: http://localhost:8000/
      profile: prod
#      label: master

==============================

现在将profile改成test,重启工程

# 
spring:
  application:
    name: wangxh
  cloud:
    config:
      uri: http://localhost:8000/
      profile: test
#      label: master

在浏览器访问:http://localhost/tag

所以在boottrap.yml文件中通过配置 profile的值,而这个值就是git仓库配置的文件。

总结就是这样:

bootstrap                                git仓库

profile: test                              wangxh-test.yml

profile: dev                              wangxh-dev.yml

profle: prod                             wangxh-prod.yml

 

后记

如果在工程中配置的bootstrap.yml文件使用配置中心,而此时在本地开发的时候又不想使用配置中心的配置文件(主要是git仓库的配置文件在运维哪里,修改很麻烦),那么只需要在application.yml文件将

spring.application.name改一下名字,也就是git仓库不存在,此时启动工程后将和未使用一样,配置文件还是从本机的application.yml文件中加载。

 

© 著作权归作者所有

共有 人打赏支持
HGMrWang
粉丝 6
博文 88
码字总数 41577
作品 0
深圳
程序员
私信 提问
Spring Boot与Spring Cloud是什么关系?

SpringBoot先于Spring Cloud问世。 SpringBoot相当于脚手架,借助他可以快速搭建房子,它本身不具备任何功能属性,值是普通房间,没有其他任何功能。 什么是Spring Boot Spring Boot简化了基...

远方的梦Java
08/05
0
0
RPC框架实践之:Apache Thrift

一、概述 RPC(Remote Procedure Call)即 远程过程调用,说的这么抽象,其实简化理解就是一个节点如何请求另一节点所提供的服务。在文章 微服务调用链追踪中心搭建 一文中模拟出来的调用链:...

CodeSheep
05/14
0
0
简述Spring Boot与Spring Cloud的关系

如下文章字数大约600字,阅读时间需要5分钟左右。 随着微服务架构的持续火热,以及对开发部署迭代需求越来越快速,现今,spring boot逐渐火热,越来越流行。 随着spring boot 流行的还有另外...

Java大蜗牛
08/27
0
0
精通SpringBoot——第一篇:幕后的建设者之DispatcherServlet和Multipart配置

如果大家搭建过SpringMVC应用,那么一定会写个几个xml配置文件,如 application.xml, spring-mvc.xml 等。一般来说,我们搭建项目的初始步骤如下: 初始化Spring MVC 的DispatcherServlet; ...

liululee
07/18
0
0
Eureka服务发现---SpringCloud(一)

Eureka服务发现 (一)前言 下面我们添加一个EurekaServer的module模块,作为Eureka注册中心;

JackyRiver
07/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

高并发编程:解析HashMap

底层实现原理 在JDK1.8以前版本中,HashMap的实现是数组+链表,它的缺点是即使哈希函数选择的再好,也很难达到元素百分百均匀分布,而且当HashMap中有大量元素都存到同一个桶中时,这个桶会有...

小刀爱编程
32分钟前
0
0
程序员请不要假装很努力,因为结果不会陪你演戏

前言: 我一直相信这样一句话:真正的危机,来源于在正确的时间做不正确的事。没有在正确的时间,为下一步做出积累,这才是危机的根源。 比如,当你迈过了30岁这个坎,你的能力还局限于程序的...

Java干货分享
37分钟前
2
0
Fio随机读IOPS测试值可能偏大的原因分析

问题描述: 在使用fio进行虚拟机磁盘(Ceph的RBD,格式化为ext4文件系统)的IOPS测试时,发现randread比预估值高许多; 在使用相同参数进行randwrite测试之后,再进行randread时会出现此现象...

LastRitter
41分钟前
2
0
JavaScript引用类型Object常见用法实例分析

1、JavaScript数据类型 (1)基本类型 5种基本类型:Undefined、Null、Boolean、Number、String (2)引用类型 5种引用类型:Object、Array、Date、RepExp、Function (3)基本类型与引用类型的异同...

peakedness丶
48分钟前
1
0
教你理清SpringBoot与SpringMVC的关系

spring boot就是一个大框架里面包含了许许多多的东西,其中spring就是最核心的内容之一,当然就包含spring mvc。spring mvc 是只是spring 处理web层请求的一个模块。因此他们的关系大概就是这...

别打我会飞
53分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部