文档章节

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

HGMrWang
 HGMrWang
发布于 2017/09/01 10:21
字数 729
阅读 34
收藏 0
点赞 0
评论 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
粉丝 5
博文 64
码字总数 38716
作品 0
深圳
程序员
恒宇少年/spring-boot-chapter

简书整套文档以及源码解析 专题 专题名称 专题描述 001 Spring Boot 核心技术 讲解SpringBoot一些企业级层面的核心组件 002 Spring Cloud 核心技术 对Spring Cloud核心技术全面讲解 003 Quer...

恒宇少年 ⋅ 04/19 ⋅ 0

RPC框架实践之:Apache Thrift

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

CodeSheep ⋅ 05/14 ⋅ 0

springboot开发简单的web应用前篇

你已经会spring了,也非常熟悉springmvc的开发,平时你搭建个web应用简单吗?好像也不难!那么今天我来试试用springboot来开发个简单的web应用来试试。 在正式讲解springboot开发web应用之前...

GeCoder ⋅ 05/04 ⋅ 0

【Spring Cloud】分布式必学springcloud(九)——分布式配置中心 SpringCloud config

一、前言 在前面的博客中,小编依次向大家介绍了配置中心Eureka,负载均衡机制Ribbon和Feign,系统容错机制Hystrix。这样基本上的分布式开发是没有问题了,在使用的时候也是非常的痛快吧。 ...

kisscatforever ⋅ 04/24 ⋅ 0

使用IntelliJ Idea新建SpringBoot项目

简单给大家介绍一下我来创建SpringBoot项目使用的工具,本人使用IntelliJ Idea来创建项目,利用其中的Spring Initializr工具来快速创建项目。 步骤如下: 菜单栏中选择File--New--Project,出...

dalaoyang ⋅ 03/11 ⋅ 0

SpringBoot 入门实例

SpringBoot 是由 pivotal 提供的 Java 开发框架,伴随着 spring 4.0 版本一起发布,旨在简化 Spring 项目的初始化及开发过程,框架本身为开发过程提供了大量的默认配置,当然我们也可以通过简...

Aotian ⋅ 05/29 ⋅ 0

Spring Cloud简介/版本选择/ZooKeeper例子搭建简单说明

一、什么是Spring Cloud 官方的说法就是Spring Cloud 给开发者提供一套按照一定套路快速开发分布式系统的工具。 具体点就是Spring Boot实现的微服务架构开发工具。它为微服务架构中涉及的配置...

easonjim ⋅ 2017/09/18 ⋅ 0

SpringCloud负载均衡

Ribbon 配合eureka可以不用配置文件,自动实现负载均衡。 consumer可以根据项目服务名称进行访问,如果多个服务名称一致,自动实现负载均衡。 Feign 一套基于Netflix Feign实现的声明式服务调...

JavionXiong ⋅ 前天 ⋅ 0

第一章:Maven环境下如何配置QueryDSL环境

QueryDSL是一个通用的查询框架,框架的核心原则是创建安全类型的查询,开始QueryDSL仅支持Hibernate(HQL),在不断开源人士加入QueryDSL团队后,陆续发布了针对JPA,JDO,JDBC,Lucene,Hib...

恒宇少年 ⋅ 2017/07/01 ⋅ 0

springboot的后台系统的初步搭建

springboot的后台系统的初步搭建 基于springboot的设备管理系统的架构搭建 使用工具:idea 数据库:mysql 相关技术:shiro mybatis activemq等 (1) 新建项目 new project ,idea有专门的sprin...

代金券优惠 ⋅ 04/15 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Jenkins实践3 之脚本

#!/bin/sh# export PROJ_PATH=项目路径# export TOMCAT_PATH=tomcat路径killTomcat(){pid=`ps -ef | grep tomcat | grep java|awk '{print $2}'`echo "tom...

晨猫 ⋅ 今天 ⋅ 0

Spring Bean的生命周期

前言 Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,掌握这些可以加深对 Spring 的理解。 首先看下生命周期图: 再谈生命周期之前有一点需要先明确: Spring 只帮我们管理单例模...

素雷 ⋅ 今天 ⋅ 0

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

VS中使用X64汇编

需要注意的是,在X86项目中,可以使用__asm{}来嵌入汇编代码,但是在X64项目中,再也不能使用__asm{}来编写嵌入式汇编程序了,必须使用专门的.asm汇编文件来编写相应的汇编代码,然后在其它地...

simpower ⋅ 今天 ⋅ 0

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

实验楼—MySQL基础课程-挑战3实验报告

按照文档要求创建数据库 sudo sercice mysql startwget http://labfile.oss.aliyuncs.com/courses/9/createdb2.sqlvim /home/shiyanlou/createdb2.sql#查看下数据库代码 代码创建了grade......

zhangjin7 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部