使用spring-cloud是基于熟悉springboot基础上进行的。本篇介绍全局配置,spring-boot版本就以1.4.0来做吧。项目地址:

https://git.oschina.net/bingyulei007/spring-cloud-simple

一、搭建全局配置服务器

  首先构建spring-boot项目,pom加入如下引用:

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Camden.SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
  </dependency>
</dependencies>

  简单来说,就是提供一个地址,可以获取项目的配置属性,如果你不适用spring-cloud提供的配置服务器,你甚至可以自己写一个基于rest的服务器,来下发配置文件属性。

  启动类ConfigServer.java代码。加入对饮的configserver的注解

@SpringBootApplication
@EnableConfigServer
public class ConfigServer {
public static void main(String[] args) {
SpringApplication.run(ConfigServer.class, args);
}
}

  configserver读取配置文件可以从git服务器上,也可以从本地git目录,也可以读取本地磁盘的位置。这里我们配置一种基于本地磁盘位置的配置。其中端口号设置为8088,不启用健康检查,配置文件存放到本地D盘配置文件目录:

server:
port:
spring:
profiles:
active: native
cloud:
config:
server:
health:
enabled: false
native:
searchLocations: D:/ideaprojects/cloud-config-repo

然后在对应的 'D:/ideaprojects/cloud-config-repo'目录加入配置文件:cloud-config-client.properties和cloud-config-common.properties,里面添加如下内容

cloud-config-common.properties的内容
———————————————————————————————————————————————————————————————————————
#url编码,解决中文问题
server.tomcat.uri-encoding=UTF-
#序列化时间格式
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.mvc.date-format=yyyy-MM-dd HH:mm:ss
#mvc序列化时候时区选择
spring.jackson.time-zone=GMT+
#aop启用
spring.aop.auto=true
spring.aop.proxy-target-class=true
————————————————————————————————————————————————————————————————————————
cloud-config-client.properties的内容
———————————————————————————————————————————————————————————————————————— 
#<!-- 项目名称(spring默认读取)-->
spring.application.name=client-test
#数据库配置
#自定义属性配置
bing.for.test=hello-word

ok,至此,全局配置服务器已经准备好,我们可以启动测试了。

启动服务,GET方式访问'http://localhost:8088/cloud-config-common/application.property'或者'http://localhost:8088/cloud-config/common'就可以返回配置的属性。

二、客户端访问

现在我们创建一个客户端,来读取全局配置,新建项目。pom加入如下引用:

    <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
</dependencies>

在resource目录中创建bootstrap.yum文件(读取全局配置使用,不必须有application.yml的配置文件),加入如下配置:

server:
port:
spring:
cloud:
config:
uri: http://localhost:8088
# 全局配置文件名的前面部分
name: cloud-config
# 可以读取多个配置文件
profile: client,common
failFast: true
application:
name: config-client-

然后创建启动类ConfigClient.java 和测试类UserController.java类:

package com.bing;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; /**
* 全局配置服务器
*
*/
@SpringBootApplication
public class ConfigClient {
public static void main(String[] args) {
SpringApplication.run(ConfigClient.class, args);
}
}
package com.bing.User;

import com.bing.model.User;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController; import java.util.Date; /**
* Created by szt on 2016/11/18.
*/
@RestController
public class UserController {
@Value("${bing.for.test}")
private String testProperty; @RequestMapping(value = "/user/{id}",method = RequestMethod.GET)
public User getUser(@PathVariable("id") String id) {
User user=new User();
user.setName(testProperty);
user.setId(id);
user.setCreatedTime(new Date());
return user;
}
}

bingyulei007

启动测试访问地址:http://localhost:8081/user/as12返回如下消息:

{
"id": "as12",
"name": "hello-word",
"createdTime": "2016-11-18 12:17:34"
}

至此,一个简单的全局配置就完成了。注意上面返回的name是全局配置中配置的属性,时间格式也是全局配置中指定的。下一篇讲一下有关全局配置部署热部分的知识。

spring-cloud构架微服务(1)-全局配置的更多相关文章

  1. spring-cloud构架微服务(2)-全局配置二

    接上篇,实际项目中,可能会遇到有些配置项,例如:邮件地址.手机号等在服务已经上线之后做了改动(就当会出现这种情况好了).然后你修改了配置信息,就得一个一个去重启对应的服务.spring-全局配置提供了 ...

  2. Spring Cloud搭建微服务架构----文章汇总

    Spring Cloud搭建微服务架构----前言 原文地址:https://my.oschina.net/u/1000241/blog/882929 Spring Cloud搭建微服务架构----使 ...

  3. Spring Cloud构建微服务架构:服务网关(路由配置)【Dalston版】

    转载:http://blog.didispace.com/spring-cloud-starter-dalston-6-2/ 原创  2017-08-26  翟永超  Spring Cloud 被围观 ...

  4. Spring Cloud构建微服务架构(一)服务注册与发现

    Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁 ...

  5. 【微服务】使用spring cloud搭建微服务框架,整理学习资料

    写在前面 使用spring cloud搭建微服务框架,是我最近最主要的工作之一,一开始我使用bubbo加zookeeper制作了一个基于dubbo的微服务框架,然后被架构师否了,架构师曰:此物过时.随 ...

  6. Spring Cloud与微服务构建:Spring Cloud简介

    Spring Cloud简介 微服务因该具备的功能 微服务可以拆分为"微"和"服务"二字."微"即小的意思,那到底多小才算"微&q ...

  7. Spring Cloud与微服务构建:微服务简介

    Spring Cloud与微服务构建:微服务简介 单体架构及其不足 1.单体架构简介 在软件设计中,经常提及和使用经典的3曾模型,即表示层.业务逻辑层和数据访问层. 表示层:用于直接和用户交互,也成为 ...

  8. 第1章 Spring Cloud 构建微服务架构(一)服务注册与发现

      一.Spring Cloud 简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总 ...

  9. Spring Cloud Alibaba | 微服务分布式事务之Seata

    Spring Cloud Alibaba | 微服务分布式事务之Seata 本篇实战所使用Spring有关版本: SpringBoot:2.1.7.RELEASE Spring Cloud:Green ...

随机推荐

  1. 【三支火把】--- 关于BIOS&UEFI查阅资料网站总结

    UEFI和BIOS的水太深,网上能找到的资料是那么的少,各个组织之间互有交叉,难弄的很,总结了下常用的BIOS资料网站,仅供参考,如果遗漏之处,请指出,博主将继续完善补充……

  2. memcache_helper

    class memcache_helper extends memcache { private $host = "127.0.0.1"; private $port = &quo ...

  3. [TJOI2013]松鼠聚会 BZOJ 3170

    题目描述 草原上住着一群小松鼠,每个小松鼠都有一个家.时间长了,大家觉得应该聚一聚.但是草原非常大,松鼠们都很头疼应该在谁家聚会才最合理. 每个小松鼠的家可以用一个点x,y表示,两个点的距离定义为点( ...

  4. Java基础笔记(十七)——继承(续)final

    final  最终的 修饰类,此类不能被继承.final与访问修饰符public位置随意,在class前即可.public final class A{ } 修饰方法,此方法不能被子类重写,但可以被子 ...

  5. Windows Server上用命令来起停IIS站点

    平时,在Server上管理IIS,都是在界面上进行一些配置,然后再做一些start和stop操作... 对于配置的人来说,会做一些重复步骤,所以适当的使用命令,能大大提高效率. 下面命令是自己之前使用 ...

  6. svg 日常操作

    创建svg 文件 <svg> </svg> 详解viewBox  SVG Viewport.View Box和preserveAspectRatio 形状  标签内的值可以是百 ...

  7. JTAG与JLink说明

    JTAG接口解读 通常所说的JTAG大致分两类,一类用于测试芯片的电气特性,检测芯片是否有问题:一类用于Debug:一般支持JTAG的CPU内都包含了这两个模块. 一个含有JTAG Debug接口模块 ...

  8. echarts设置线条粗细

    series: [ { name:"buy", type:'line', data:[], itemStyle: { normal: { color: '#6cb041', lin ...

  9. ORA-14517: Subpartition of index "string.string" is in unusable state

    今天碰到个ORA-03113, 原因不明. 猜测因为某些table DDL操作过后导致index unuable的case, 然后进行analyze table, 再碰到ORA-14517.  最后通 ...

  10. 简单的Web日志分析脚本

    前言 长话短说,事情的起因是这样的,由于工作原因需要分析网站日志,服务器是windows,iis日志,在网上找了找,github找了找,居然没找到,看来只有自己动手丰衣足食. 那么分析方法我大致可分为 ...