51Testing软件测试论坛

标题: Spring Cloud Config 基础示例 [打印本页]

作者: 梦幻小丑灯    时间: 2019-3-8 16:29
标题: Spring Cloud Config 基础示例
Spring Cloud Config 简介什么是Srping Cloud Config?
Spring Cloud Config 是一种分布式配置中心框架, 为分布式系统中的外部化配置提供服务器和客户端支持。(同类技术还有vault,zookeeper,Consul)
使用Config Server,可以在所有环境中管理应用程序的外部属性。客户端和服务器上的概念映射与Spring Environment和PropertySource抽象,因此它们非常适合Spring应用程序,但可以与任何语言运行的任何应用程序一起使用。当应用程序通过部署管道从开发到测试并进入生产时,您可以管理这些环境之间的配置,并确保应用程序具有迁移时需要运行的所有内容。服务器存储后端的默认实现使用git,因此它可以轻松支持配置环境的标记版本,以及可用于管理内容的各种工具。
Spring Cloud Config也主要由两部分组成:
Config-Server: 用于配置外部的资源文件,支持对属性值进行加解密
Config-client:绑定到config server使用远程配置文件初始化spring,支持对属性值进行加解密
本文示例说明新建ConfigServer

为了减少文章长度,尽量干货,创建过程就不截说明了,建议使用Intellij idea进行创建;

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3.         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4.         <modelVersion>4.0.0</modelVersion>

  5.         <groupId>com.lc.springcloud</groupId>
  6.         <artifactId>config-server</artifactId>
  7.         <version>0.0.1-SNAPSHOT</version>
  8.         <packaging>jar</packaging>

  9.         <name>config-server</name>
  10.         <description>Demo project for Spring Boot</description>

  11.         <parent>
  12.                 <groupId>org.springframework.boot</groupId>
  13.                 <artifactId>spring-boot-starter-parent</artifactId>
  14.                 <version>2.1.0.RELEASE</version>
  15.                 <relativePath/> <!-- lookup parent from repository -->
  16.         </parent>

  17.         <properties>
  18.                 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  19.                 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  20.                 <java.version>1.8</java.version>
  21.                 <spring-cloud.version>Greenwich.M2</spring-cloud.version>
  22.         </properties>

  23.         <dependencies>
  24.                 <dependency>
  25.                         <groupId>org.springframework.cloud</groupId>
  26.                         <artifactId>spring-cloud-config-server</artifactId>
  27.                 </dependency>

  28.                 <dependency>
  29.                         <groupId>org.springframework.cloud</groupId>
  30.                         <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  31.                 </dependency>

  32.                 <dependency>
  33.                         <groupId>org.springframework.boot</groupId>
  34.                         <artifactId>spring-boot-starter-test</artifactId>
  35.                         <scope>test</scope>
  36.                 </dependency>
  37.         </dependencies>

  38.         <dependencyManagement>
  39.                 <dependencies>
  40.                         <dependency>
  41.                                 <groupId>org.springframework.cloud</groupId>
  42.                                 <artifactId>spring-cloud-dependencies</artifactId>
  43.                                 <version>${spring-cloud.version}</version>
  44.                                 <type>pom</type>
  45.                                 <scope>import</scope>
  46.                         </dependency>
  47.                 </dependencies>
  48.         </dependencyManagement>

  49.         <build>
  50.                 <plugins>
  51.                         <plugin>
  52.                                 <groupId>org.springframework.boot</groupId>
  53.                                 <artifactId>spring-boot-maven-plugin</artifactId>
  54.                         </plugin>
  55.                 </plugins>
  56.         </build>

  57.         <repositories>
  58.                 <repository>
  59.                         <id>spring-milestones</id>
  60.                         <name>Spring Milestones</name>
  61.                         <url>https://repo.spring.io/milestone</url>
  62.                         <snapshots>
  63.                                 <enabled>false</enabled>
  64.                         </snapshots>
  65.                 </repository>
  66.         </repositories>
  67. </project>
复制代码
  1. server:
  2.         port: 8100
  3. spring:
  4.         application:
  5.                 name: config-server
  6.         cloud:
  7.             config:
  8.                         server:
  9.                         git:
  10.                            uri: https://github.com/lvchaogit/SpringCloud
  11. eureka:
  12.    client:
  13.     service-url:
  14.       defaultZone: http://localhost:8081/eureka/ # 服务注册中心地址
复制代码

通过配置不难理解,该配置是从git上获取配置,更多配置后续详解;

  1. @SpringBootApplication
  2. @EnableConfigServer
  3. @EnableDiscoveryClient
  4. public class ConfigServerApplication {

  5.         public static void main(String[] args) {
  6.                 SpringApplication.run(ConfigServerApplication.class, args);
  7.         }
  8. }
复制代码

主要是加上** @EnableConfigServer**注解,开启configserver功能

搭建 Config Client
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3.         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4.         <modelVersion>4.0.0</modelVersion>

  5.         <groupId>com.lc.springcloud</groupId>
  6.         <artifactId>config-client</artifactId>
  7.         <version>0.0.1-SNAPSHOT</version>
  8.         <packaging>jar</packaging>

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

  11.         <parent>
  12.                 <groupId>org.springframework.boot</groupId>
  13.                 <artifactId>spring-boot-starter-parent</artifactId>
  14.                 <version>2.1.0.RELEASE</version>
  15.                 <relativePath/> <!-- lookup parent from repository -->
  16.         </parent>

  17.         <properties>
  18.                 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  19.                 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  20.                 <java.version>1.8</java.version>
  21.                 <spring-cloud.version>Greenwich.M2</spring-cloud.version>
  22.         </properties>

  23.         <dependencies>
  24.                 <!-- config starter begin-->
  25.                 <dependency>
  26.                         <groupId>org.springframework.cloud</groupId>
  27.                         <artifactId>spring-cloud-starter-config</artifactId>
  28.                 </dependency>
  29.                 <!-- config starter end-->
  30.                 <dependency>
  31.                         <groupId>org.springframework.cloud</groupId>
  32.                         <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  33.                 </dependency>
  34.                 <dependency>
  35.                         <groupId>org.springframework.boot</groupId>
  36.                         <artifactId>spring-boot-starter-web</artifactId>
  37.                 </dependency>
  38.                 <dependency>
  39.                         <groupId>mysql</groupId>
  40.                         <artifactId>mysql-connector-java</artifactId>
  41.                 </dependency>
  42.                 <dependency>
  43.                         <groupId>org.apache.commons</groupId>
  44.                         <artifactId>commons-pool2</artifactId>
  45.                         <version>2.5.0</version>
  46.                 </dependency>
  47.                 <dependency>
  48.                         <groupId>com.alibaba</groupId>
  49.                         <artifactId>druid-spring-boot-starter</artifactId>
  50.                         <version>1.1.10</version>
  51.                 </dependency>
  52.                 <!-- mybatis-plus begin -->
  53.                 <dependency>
  54.                         <groupId>com.baomidou</groupId>
  55.                         <artifactId>mybatis-plus-boot-starter</artifactId>
  56.                         <version>2.1.9</version>
  57.                         <exclusions>
  58.                                 <exclusion>
  59.                                         <artifactId>tomcat-jdbc</artifactId>
  60.                                         <groupId>org.apache.tomcat</groupId>
  61.                                 </exclusion>
  62.                         </exclusions>
  63.                 </dependency>
  64.                 <!--config监控模块  -->
  65.                 <dependency>
  66.                         <groupId>org.springframework.boot</groupId>
  67.                         <artifactId>spring-boot-starter-actuator</artifactId>
  68.                 </dependency>
  69.                 <dependency>
  70.                         <groupId>org.springframework.boot</groupId>
  71.                         <artifactId>spring-boot-starter-test</artifactId>
  72.                         <scope>test</scope>
  73.                 </dependency>
  74.                 <dependency>
  75.                         <groupId>log4j</groupId>
  76.                         <artifactId>log4j</artifactId>
  77.                         <version>1.2.13</version>
  78.                         <scope>runtime</scope>
  79.                 </dependency>
  80.                 <dependency>
  81.                         <groupId>org.projectlombok</groupId>
  82.                         <artifactId>lombok</artifactId>
  83.                 </dependency>
  84.         </dependencies>

  85.         <dependencyManagement>
  86.                 <dependencies>
  87.                         <dependency>
  88.                                 <groupId>org.springframework.cloud</groupId>
  89.                                 <artifactId>spring-cloud-dependencies</artifactId>
  90.                                 <version>${spring-cloud.version}</version>
  91.                                 <type>pom</type>
  92.                                 <scope>import</scope>
  93.                         </dependency>
  94.                 </dependencies>
  95.         </dependencyManagement>

  96.         <build>
  97.                 <plugins>
  98.                         <plugin>
  99.                                 <groupId>org.springframework.boot</groupId>
  100.                                 <artifactId>spring-boot-maven-plugin</artifactId>
  101.                         </plugin>
  102.                 </plugins>
  103.         </build>

  104.         <repositories>
  105.                 <repository>
  106.                         <id>spring-milestones</id>
  107.                         <name>Spring Milestones</name>
  108.                         <url>https://repo.spring.io/milestone</url>
  109.                         <snapshots>
  110.                                 <enabled>false</enabled>
  111.                         </snapshots>
  112.                 </repository>
  113.         </repositories>
  114. </project>
复制代码
  1. spring:
  2.   application:
  3.     name: config-client
  4.   cloud:
  5.     config:
  6.       profile: dev
  7.       label: master
  8.       discovery:
  9.         enabled: true
  10.         service-id: config-server
  11. server:
  12.   port: 2001
  13. eureka:
  14.   client:
  15.       register-with-eureka: false     #因此处只是消费,不提供服务,所以不需要向eureka server注册
  16.       service-url:
  17.         defaultZone: http://localhost:8081/eureka/ # 服务注册中心地址
复制代码







欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2