zoukankan      html  css  js  c++  java
  • spring-cloud构架微服务(1)-全局配置

    使用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: 8088
    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-8 #序列化时间格式 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+8 #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: 8081
    spring:
      cloud:
        config:
          uri: http://localhost:8088
    #      全局配置文件名的前面部分
          name: cloud-config
    #     可以读取多个配置文件
          profile: client,common
          failFast: true
      application:
        name: config-client-01

    然后创建启动类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是全局配置中配置的属性,时间格式也是全局配置中指定的。下一篇讲一下有关全局配置部署热部分的知识。

  • 相关阅读:
    PTA —— 基础编程题目集 —— 函数题 —— 61 简单输出整数 (10 分)
    PTA —— 基础编程题目集 —— 函数题 —— 61 简单输出整数 (10 分)
    练习2.13 不用库函数,写一个高效计算ln N的C函数
    练习2.13 不用库函数,写一个高效计算ln N的C函数
    练习2.13 不用库函数,写一个高效计算ln N的C函数
    迷宫问题 POJ 3984
    UVA 820 Internet Bandwidth (因特网带宽)(最大流)
    UVA 1001 Say Cheese(奶酪里的老鼠)(flod)
    UVA 11105 Semiprime Hnumbers(H半素数)
    UVA 557 Burger(汉堡)(dp+概率)
  • 原文地址:https://www.cnblogs.com/shizhongtao/p/spring-cloud.html
Copyright © 2011-2022 走看看