Răsfoiți Sursa

增加cloud模块

wei 5 ani în urmă
părinte
comite
85769a76a0
40 a modificat fișierele cu 1248 adăugiri și 28 ștergeri
  1. 79 0
      base-springframework/base-springframework-cloud/pom.xml
  2. 1 1
      base-springframework/base-springframework-cloud/src/main/java/com/wei/base/springframework/cloud/config/FeignConfigure.java
  3. 1 1
      base-springframework/base-springframework-cloud/src/main/java/com/wei/base/springframework/cloud/feign/FeignDecoder.java
  4. 54 0
      base-springframework/base-springframework-cloud/src/main/java/com/wei/base/springframework/cloud/web/handler/BaseExceptionHandler.java
  5. 7 0
      base-springframework/base-springframework-cloud/src/main/resources/META-INF/spring.factories
  6. 12 0
      base-springframework/base-springframework-cloud/src/main/resources/application-cloud.yml
  7. 99 0
      base-springframework/base-springframework-constant/pom.xml
  8. 1 1
      base-springframework/base-springframework-constant/src/main/java/com/wei/base/springframework/constant/enums/RestfulEnum.java
  9. 1 1
      base-springframework/base-springframework-constant/src/main/java/com/wei/base/springframework/constant/exception/BaseException.java
  10. 1 1
      base-springframework/base-springframework-constant/src/main/java/com/wei/base/springframework/constant/exception/ServiceException.java
  11. 3 3
      base-springframework/base-springframework-constant/src/main/java/com/wei/base/springframework/constant/vo/RestfulVO.java
  12. 4 0
      base-springframework/base-springframework-constant/src/main/resources/META-INF/spring.factories
  13. 15 0
      base-springframework/base-springframework-constant/src/main/resources/application-common.yml
  14. 178 0
      base-springframework/base-springframework-constant/src/main/resources/logback-spring.xml
  15. 5 0
      base-springframework/base-springframework-core/pom.xml
  16. 0 20
      base-springframework/base-springframework-core/src/main/java/com/wei/base/springframework/core/web/handler/BaseExceptionHandler.java
  17. 186 0
      base-springframework/base-springframework-mysql/src/main/java/com/wei/base/springframework/mysql/generator/Generator.java
  18. 1 0
      base-springframework/pom.xml
  19. 77 0
      consul/README.md
  20. BIN
      consul/consul_1.8.0_linux_amd64.zip
  21. 54 0
      wei-test-cloud/pom.xml
  22. 47 0
      wei-test-cloud/wei-test-cloud-api/pom.xml
  23. 14 0
      wei-test-cloud/wei-test-cloud-api/src/main/java/com/wei/cloud/api/ApiService.java
  24. BIN
      wei-test-cloud/wei-test-cloud-api/target/classes/com/wei/cloud/api/ApiService.class
  25. 56 0
      wei-test-cloud/wei-test-cloud-app/pom.xml
  26. 12 0
      wei-test-cloud/wei-test-cloud-app/src/main/java/com/wei/cloud/TestCloudApplication.java
  27. 28 0
      wei-test-cloud/wei-test-cloud-app/src/main/java/com/wei/cloud/controller/TestController.java
  28. 33 0
      wei-test-cloud/wei-test-cloud-app/src/main/java/com/wei/cloud/vo/UserVO.java
  29. 15 0
      wei-test-cloud/wei-test-cloud-app/src/main/resources/bootstrap.yml
  30. 47 0
      wei-test/wei-test-api/pom.xml
  31. BIN
      wei-test/wei-test-api/target/classes/com/wei/cloud/vo/UserVO.class
  32. 56 0
      wei-test/wei-test-app/pom.xml
  33. 14 0
      wei-test/wei-test-app/src/main/java/com/wei/test/TestApplication.java
  34. 36 0
      wei-test/wei-test-app/src/main/java/com/wei/test/controller/TestController.java
  35. 33 0
      wei-test/wei-test-app/src/main/java/com/wei/test/vo/UserVO.java
  36. 39 0
      wei-test/wei-test-app/src/main/resources/bootstrap.yml
  37. 39 0
      wei-test/wei-test-app/target/classes/bootstrap.yml
  38. BIN
      wei-test/wei-test-app/target/classes/com/wei/test/TestApplication.class
  39. BIN
      wei-test/wei-test-app/target/classes/com/wei/test/controller/TestController.class
  40. BIN
      wei-test/wei-test-app/target/classes/com/wei/test/vo/UserVO.class

+ 79 - 0
base-springframework/base-springframework-cloud/pom.xml

@@ -0,0 +1,79 @@
+<?xml version="1.0"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>com.wei</groupId>
+        <artifactId>base-springframework</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>base-springframework-cloud</artifactId>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <java.version>1.8</java.version>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
+        <spring-boot-maven-plugin.version>2.3.1.RELEASE</spring-boot-maven-plugin.version>
+        <spring-cloud.version>2.2.3.RELEASE</spring-cloud.version>
+        <feign-httpclient.version>10.11</feign-httpclient.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.wei</groupId>
+            <artifactId>base-springframework-constant</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+            <version>${spring-boot-starter.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-consul-all</artifactId>
+            <version>${spring-cloud.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+            <version>${spring-cloud.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.wei</groupId>
+            <artifactId>base-springframework-util</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>io.github.openfeign</groupId>
+            <artifactId>feign-httpclient</artifactId>
+            <version>${feign-httpclient.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot-maven-plugin.version}</version>
+                    <executions>
+                        <execution>
+                            <goals>
+                                <goal>repackage</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+</project>

+ 1 - 1
base-springframework/base-springframework-cloud/src/main/java/com/wei/base/springframework/cloud/config/FeignConfigure.java

@@ -13,4 +13,4 @@ public class FeignConfigure {
      * 过滤header参数传递字段
      */
     private String headerTransmitFilter = "Filter-Enabled";
-}
+}

+ 1 - 1
base-springframework/base-springframework-cloud/src/main/java/com/wei/base/springframework/cloud/feign/FeignDecoder.java

@@ -31,4 +31,4 @@ public class FeignDecoder extends SpringDecoder {
         log.info("url:{}, body:{}", response.request().url(), rString);
         return rString;
     }
-}
+}

+ 54 - 0
base-springframework/base-springframework-cloud/src/main/java/com/wei/base/springframework/cloud/web/handler/BaseExceptionHandler.java

@@ -0,0 +1,54 @@
+package com.wei.base.springframework.cloud.web.handler;
+
+import com.netflix.hystrix.exception.HystrixRuntimeException;
+import com.wei.base.springframework.constant.enums.RestfulEnum;
+import com.wei.base.springframework.constant.vo.RestfulVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.validation.ConstraintViolation;
+import javax.validation.ConstraintViolationException;
+import java.util.Set;
+
+/**
+ * 公共异常处理类
+ *
+ * @author admin
+ */
+@Slf4j
+@ControllerAdvice
+public class BaseExceptionHandler {
+
+    @Value("${debug:false}")
+    private boolean debug;
+
+    @ExceptionHandler(HystrixRuntimeException.class)
+    @ResponseBody
+    public RestfulVO<String> hystrixRuntimeException(HystrixRuntimeException e) {
+        log.error(e.getMessage(), e.getCause());
+        return new RestfulVO<>(RestfulEnum.FAIL, "系统异常!");
+    }
+
+    /**
+     * 封装javax.validation抛出的错误
+     *
+     * @param e
+     * @return
+     */
+    @ExceptionHandler(ConstraintViolationException.class)
+    @ResponseBody
+    public RestfulVO<String> constraintViolationException(ConstraintViolationException e) {
+        log.error(e.getMessage(), e);
+        Set<ConstraintViolation<?>> constraintViolations = e.getConstraintViolations();
+        StringBuilder stringBuilder = new StringBuilder();
+
+        constraintViolations.forEach(vo -> {
+            stringBuilder.append(vo.getMessage() + ";");
+        });
+
+        return new RestfulVO<>(RestfulEnum.FAIL, stringBuilder.toString());
+    }
+}

+ 7 - 0
base-springframework/base-springframework-cloud/src/main/resources/META-INF/spring.factories

@@ -0,0 +1,7 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+    com.wei.base.springframework.cloud.config.FeignConfigure,\
+    com.wei.base.springframework.cloud.feign.FeignInterceptor,\
+    com.wei.base.springframework.cloud.feign.FeignDecoder
+
+org.springframework.boot.env.EnvironmentPostProcessor=\
+    com.wei.base.springframework.cloud.env.InitializeCustomConfiguration

+ 12 - 0
base-springframework/base-springframework-cloud/src/main/resources/application-cloud.yml

@@ -0,0 +1,12 @@
+spring:
+  cloud:
+    consul:
+      config:
+        #是否启用配置中心 默认为true启用
+        enabled: true
+        # 表示consul上面文件的格式 有四种 yaml properties key_value files
+        format: yaml
+        prefix: config/${spring.profiles.active}
+        data-key: application
+      discovery:
+        prefer-ip-address: true

+ 99 - 0
base-springframework/base-springframework-constant/pom.xml

@@ -0,0 +1,99 @@
+<?xml version="1.0"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>com.wei</groupId>
+        <artifactId>base-springframework</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>base-springframework-constant</artifactId>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <java.version>1.8</java.version>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
+        <spring-boot-maven-plugin.version>2.3.1.RELEASE</spring-boot-maven-plugin.version>
+        <springfox-swagger.version>2.10.5</springfox-swagger.version>
+        <mapstruct.version>1.3.1.Final</mapstruct.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.wei</groupId>
+            <artifactId>base-springframework-util</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <!--        <dependency>
+                    <groupId>io.springfox</groupId>
+                    <artifactId>springfox-swagger2</artifactId>
+                    <version>${springfox-swagger.version}</version>
+                </dependency>
+
+                <dependency>
+                    <groupId>io.springfox</groupId>
+                    <artifactId>springfox-swagger-ui</artifactId>
+                    <version>${springfox-swagger.version}</version>
+                </dependency>
+
+        <dependency>
+            <groupId>org.springdoc</groupId>
+            <artifactId>springdoc-openapi-ui</artifactId>
+            <version>1.4.3</version>
+        </dependency>-->
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+            <version>${spring-boot-starter.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter-tomcat</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-undertow</artifactId>
+            <version>${spring-boot-starter.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.mapstruct</groupId>
+            <artifactId>mapstruct</artifactId>
+            <version>${mapstruct.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.mapstruct</groupId>
+            <artifactId>mapstruct-processor</artifactId>
+            <version>${mapstruct.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot-maven-plugin.version}</version>
+                    <executions>
+                        <execution>
+                            <goals>
+                                <goal>repackage</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+</project>

+ 1 - 1
base-springframework/base-springframework-core/src/main/java/com/wei/base/springframework/core/enums/RestfulEnum.java → base-springframework/base-springframework-constant/src/main/java/com/wei/base/springframework/constant/enums/RestfulEnum.java

@@ -1,4 +1,4 @@
-package com.wei.base.springframework.core.enums;
+package com.wei.base.springframework.constant.enums;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;

+ 1 - 1
base-springframework/base-springframework-core/src/main/java/com/wei/base/springframework/core/web/exception/BaseException.java → base-springframework/base-springframework-constant/src/main/java/com/wei/base/springframework/constant/exception/BaseException.java

@@ -1,4 +1,4 @@
-package com.wei.base.springframework.core.web.exception;
+package com.wei.base.springframework.constant.exception;
 
 /**
  * 公共异常类

+ 1 - 1
base-springframework/base-springframework-core/src/main/java/com/wei/base/springframework/core/web/exception/ServiceException.java → base-springframework/base-springframework-constant/src/main/java/com/wei/base/springframework/constant/exception/ServiceException.java

@@ -1,4 +1,4 @@
-package com.wei.base.springframework.core.web.exception;
+package com.wei.base.springframework.constant.exception;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;

+ 3 - 3
base-springframework/base-springframework-core/src/main/java/com/wei/base/springframework/core/vo/RestfulVO.java → base-springframework/base-springframework-constant/src/main/java/com/wei/base/springframework/constant/vo/RestfulVO.java

@@ -1,7 +1,7 @@
-package com.wei.base.springframework.core.vo;
+package com.wei.base.springframework.constant.vo;
 
-import com.wei.base.springframework.core.enums.RestfulEnum;
-import com.wei.base.springframework.core.web.exception.ServiceException;
+import com.wei.base.springframework.constant.enums.RestfulEnum;
+import com.wei.base.springframework.constant.exception.ServiceException;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;

+ 4 - 0
base-springframework/base-springframework-constant/src/main/resources/META-INF/spring.factories

@@ -0,0 +1,4 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+	com.wei.base.springframework.core.CoreConfiguration
+org.springframework.boot.env.EnvironmentPostProcessor=\
+  com.wei.base.springframework.core.env.InitializeCustomConfiguration

+ 15 - 0
base-springframework/base-springframework-constant/src/main/resources/application-common.yml

@@ -0,0 +1,15 @@
+#公共配置 减少各个项目中的配置
+service:
+  undertow:
+    threads:
+      # 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程
+      # 不要设置过大,如果过大,启动项目会报错:打开文件数过多
+      io: 16
+      # 阻塞任务线程池, 当执行类似servlet请求阻塞IO操作, undertow会从这个线程池中取得线程
+      # 它的值设置取决于系统线程执行任务的阻塞系数,默认值是IO线程数*8
+      worker: 256
+    # 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理
+    # 每块buffer的空间大小,越小的空间被利用越充分,不要设置太大,以免影响其他应用,合适即可
+    buffer-size: 1024
+    # 是否分配的直接内存(NIO直接分配的堆外内存)
+    direct-buffers: true

+ 178 - 0
base-springframework/base-springframework-constant/src/main/resources/logback-spring.xml

@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
+<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
+<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
+<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
+<configuration scan="true" scanPeriod="10 seconds">
+
+    <define name="logPath" class="com.wei.base.springframework.core.log.config.LogProperty"/>
+    <property name="log.path" value="/data/release/logs/${logPath}"/>
+    <!--<property name="log.path" value="/data/release/logs"/>-->
+    <property name="log.lever" value="debug"/>
+
+    <!-- 彩色日志 -->
+    <!-- 彩色日志依赖的渲染类 -->
+    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
+    <conversionRule conversionWord="wex"
+                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
+    <conversionRule conversionWord="wEx"
+                    converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
+    <!-- 彩色日志格式 -->
+    <property name="CONSOLE_LOG_PATTERN"
+              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
+
+    <!--输出到控制台-->
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+        <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>info</level>
+        </filter>
+        <encoder>
+            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
+            <!-- 设置字符集 -->
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <!--输出到文件-->
+    <!-- 时间滚动输出 level为 DEBUG 日志 -->
+    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文件的路径及文件名 -->
+        <file>${log.path}/debug.log</file>
+        <!--日志文件输出格式-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 设置字符集 -->
+        </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 日志归档 -->
+            <fileNamePattern>${log.path}/debug/log-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文件保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文件只记录debug级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>debug</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 时间滚动输出 level为 INFO 日志 -->
+    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文件的路径及文件名 -->
+        <file>${log.path}/info.log</file>
+        <!--日志文件输出格式-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 每天日志归档路径以及格式 -->
+            <fileNamePattern>${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文件保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文件只记录info级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>info</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 时间滚动输出 level为 WARN 日志 -->
+    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文件的路径及文件名 -->
+        <file>${log.path}/warn.log</file>
+        <!--日志文件输出格式-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
+        </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文件保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文件只记录warn级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>warn</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+
+    <!-- 时间滚动输出 level为 ERROR 日志 -->
+    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文件的路径及文件名 -->
+        <file>${log.path}/error.log</file>
+        <!--日志文件输出格式-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
+        </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文件保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文件只记录ERROR级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>ERROR</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!--
+        <logger>用来设置某一个包或者具体的某一个类的日志打印级别、
+        以及指定<appender>。<logger>仅有一个name属性,
+        一个可选的level和一个可选的addtivity属性。
+        name:用来指定受此logger约束的某一个包或者具体的某一个类。
+        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
+              还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。
+              如果未设置此属性,那么当前logger将会继承上级的级别。
+        addtivity:是否向上级logger传递打印信息。默认是true。
+    -->
+    <!--<logger name="org.springframework.web" level="info"/>-->
+    <!--<logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>-->
+    <!--
+        使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:
+        第一种把<root level="info">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息
+        第二种就是单独给dao下目录配置debug模式,代码如下,这样配置sql语句会打印,其他还是正常info级别:
+     -->
+
+
+    <!--
+        root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
+        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
+        不能设置为INHERITED或者同义词NULL。默认是DEBUG
+        可以包含零个或多个元素,标识这个appender将会添加到这个logger。
+    -->
+
+    <root level="info">
+        <appender-ref ref="CONSOLE"/>
+        <appender-ref ref="DEBUG_FILE"/>
+        <appender-ref ref="INFO_FILE"/>
+        <appender-ref ref="WARN_FILE"/>
+        <appender-ref ref="ERROR_FILE"/>
+    </root>
+</configuration>

+ 5 - 0
base-springframework/base-springframework-core/pom.xml

@@ -27,6 +27,11 @@
     <dependencies>
         <dependency>
             <groupId>com.wei</groupId>
+            <artifactId>base-springframework-constant</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.wei</groupId>
             <artifactId>base-springframework-util</artifactId>
             <version>${project.version}</version>
         </dependency>

+ 0 - 20
base-springframework/base-springframework-core/src/main/java/com/wei/base/springframework/core/web/handler/BaseExceptionHandler.java

@@ -85,26 +85,6 @@ public class BaseExceptionHandler {
      * @param e
      * @return
      */
-//    @ExceptionHandler(ConstraintViolationException.class)
-//    @ResponseBody
-//    public RestfulVO<String> constraintViolationException(ConstraintViolationException e) {
-//        log.error(e.getMessage(), e);
-//        Set<ConstraintViolation<?>> constraintViolations = e.getConstraintViolations();
-//        StringBuilder stringBuilder = new StringBuilder();
-//
-//        constraintViolations.forEach(vo -> {
-//            stringBuilder.append(vo.getMessage() + ";");
-//        });
-//
-//        return new RestfulVO<>(RestfulEnum.FAIL, stringBuilder.toString());
-//    }
-
-    /**
-     * 封装javax.validation抛出的错误
-     *
-     * @param e
-     * @return
-     */
     @ExceptionHandler(MissingServletRequestParameterException.class)
     @ResponseBody
     public RestfulVO<String> missingServletRequestParameterException(MissingServletRequestParameterException e) {

+ 186 - 0
base-springframework/base-springframework-mysql/src/main/java/com/wei/base/springframework/mysql/generator/Generator.java

@@ -0,0 +1,186 @@
+package com.wei.base.springframework.mysql.generator;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.InjectionConfig;
+import com.baomidou.mybatisplus.generator.config.*;
+import com.baomidou.mybatisplus.generator.config.po.TableInfo;
+import com.baomidou.mybatisplus.generator.config.rules.DateType;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.wei.base.springframework.mysql.constants.GeneratorParam;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 代码生成器演示
+ * </p>
+ */
+public class Generator {
+
+    private static final GeneratorParam param = new GeneratorParam();
+
+    private static final String PROJECT_PATH = System.getProperty("user.dir");
+
+    /**
+     * <p>
+     * MySQL 生成演示
+     * </p>
+     */
+    public static void main(String[] args) {
+        AutoGenerator mpg = new AutoGenerator();
+        // 选择 freemarker 引擎,默认 Veloctiy
+        mpg.setTemplateEngine(new FreemarkerTemplateEngine());
+
+        // 全局配置
+        GlobalConfig gc = getGlobalConfig();
+        mpg.setGlobalConfig(gc);
+
+        // 数据源配置
+        DataSourceConfig dsc = getDataSourceConfig(gc);
+        mpg.setDataSource(dsc);
+
+        // 策略配置
+        StrategyConfig strategy = getStrategyConfig();
+        mpg.setStrategy(strategy);
+
+        // 包配置
+        PackageConfig pc = getPackageConfig();
+        mpg.setPackageInfo(pc);
+
+        String mapstructPageName = pc.getParent() + ".mapstruct";
+        String mapstructPath = StringUtils.replace(mapstructPageName, ".", "/");
+
+        // 自定义配置
+        List<FileOutConfig> focList = getFileOutConfig(mapstructPath);
+        InjectionConfig cfg = new InjectionConfig() {
+            @Override
+            public void initMap() {
+                Map<String, Object> map = Maps.newHashMap();
+                map.put("mapstructPageName", mapstructPageName);
+                setMap(map);
+            }
+        };
+
+        cfg.setFileOutConfigList(focList);
+        mpg.setCfg(cfg);
+        
+//        // 关闭默认 xml 生成,调整生成 至 根目录
+//        TemplateConfig tc = new TemplateConfig();
+//        tc.setXml(null);
+//        mpg.setTemplate(tc);
+
+        // 自定义模板配置,可以 copy 源码 mybatis-plus/src/main/resources/templates 下面内容修改,
+        // 放置自己项目的 src/main/resources/templates 目录下, 默认名称一下可以不配置,也可以自定义模板名称
+        // TemplateConfig tc = new TemplateConfig();
+        // tc.setController("...");
+        // tc.setEntity("...");
+        // tc.setMapper("...");
+        // tc.setXml("...");
+        // tc.setService("...");
+        // tc.setServiceImpl("...");
+        // 如上任何一个模块如果设置 空 OR Null 将不生成该模块。
+        // mpg.setTemplate(tc);
+
+        // 执行生成
+        mpg.execute();
+
+        // 打印注入设置【可无】
+//        System.err.println(mpg.getCfg().getMap().get("abc"));
+    }
+
+    private static GlobalConfig getGlobalConfig() {
+        GlobalConfig gc = new GlobalConfig();
+        gc.setAuthor(param.getAuthor());
+        gc.setOutputDir(PROJECT_PATH + param.getOutputDir());
+        gc.setFileOverride(false);// 是否覆盖同名文件,默认是false
+        gc.setActiveRecord(Boolean.FALSE);// 不需要ActiveRecord特性的请改为false
+        gc.setEnableCache(false);// XML 二级缓存
+        gc.setBaseResultMap(true);// XML ResultMap
+        gc.setBaseColumnList(false);// XML columList
+        gc.setDateType(DateType.ONLY_DATE);
+        gc.setServiceName("%sService");
+
+        return gc;
+    }
+
+    private static DataSourceConfig getDataSourceConfig(GlobalConfig globalConfig) {
+        DataSourceConfig dsc = new DataSourceConfig();
+        dsc.setDbType(DbType.MYSQL);
+//        dsc.setTypeConvert(new MySqlTypeConvert() {
+//            // 自定义数据库表字段类型转换【可选】
+//            public IColumnType processTypeConvert(String fieldType) {
+//                System.out.println("Model转换类型:" + fieldType);
+//                // 注意!!processTypeConvert 存在默认类型转换,如果不是你要的效果请自定义返回、非如下直接返回。
+//                return super.processTypeConvert(globalConfig, fieldType);
+//            }
+//        });
+
+        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+        dsc.setUsername(param.getDataSourceUserName());
+        dsc.setPassword(param.getDataSourcePassWord());
+        dsc.setUrl(param.getDataSourceUrl());
+        return dsc;
+    }
+
+    private static StrategyConfig getStrategyConfig() {
+        StrategyConfig strategy = new StrategyConfig();
+        // strategy.setCapitalMode(true);// 全局大写命名 ORACLE 注意
+//        strategy.setTablePrefix(new String[]{"user_"});// 此处可以修改为您的表前缀
+        strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
+        strategy.setInclude(param.getInclude()); // 需要生成的表
+        strategy.setExclude(param.getExclude()); // 排除生成的表
+        strategy.setEntityLombokModel(Boolean.TRUE);
+        strategy.setRestControllerStyle(Boolean.TRUE);
+        // 自定义实体父类
+        // strategy.setSuperEntityClass("com.baomidou.demo.TestEntity");
+        // 自定义实体,公共字段
+        // strategy.setSuperEntityColumns(new String[] { "test_id", "age" });
+        // 自定义 mapper 父类
+        // strategy.setSuperMapperClass("com.baomidou.demo.TestMapper");
+        // 自定义 service 父类
+        // strategy.setSuperServiceClass("com.baomidou.demo.TestService");
+        // 自定义 service 实现类父类
+        // strategy.setSuperServiceImplClass("com.baomidou.demo.TestServiceImpl");
+        // 自定义 controller 父类
+        // strategy.setSuperControllerClass("com.baomidou.demo.TestController");
+        // 【实体】是否生成字段常量(默认 false)
+        // public static final String ID = "test_id";
+        // strategy.setEntityColumnConstant(true);
+        // 【实体】是否为构建者模型(默认 false)
+        // public User setName(String name) {this.name = name; return this;}
+        // strategy.setEntityBuilderModel(true);
+        return strategy;
+    }
+
+    private static PackageConfig getPackageConfig() {
+        PackageConfig pc = new PackageConfig();
+        pc.setParent(param.getParent());
+//        pc.setModuleName("test");
+        return pc;
+    }
+
+    /**
+     * 设置自定义模板
+     *
+     * @param mapstructPath
+     * @return
+     */
+    private static List<FileOutConfig> getFileOutConfig(String mapstructPath) {
+        List<FileOutConfig> list = Lists.newArrayList();
+        list.add(new FileOutConfig("/templates/mapstruct.java.ftl") {
+            @Override
+            public String outputFile(TableInfo tableInfo) {
+                //输出的位置
+                return PROJECT_PATH + param.getOutputDir() + mapstructPath + "/" + tableInfo.getEntityName() + "Mapstruct.java";
+            }
+        });
+
+        return list;
+    }
+}

+ 1 - 0
base-springframework/pom.xml

@@ -8,6 +8,7 @@
     <version>0.0.1-SNAPSHOT</version>
 
     <modules>
+        <module>base-springframework-constant</module>
         <module>base-springframework-util</module>
         <module>base-springframework-core</module>
         <module>base-springframework-mysql</module>

+ 77 - 0
consul/README.md

@@ -0,0 +1,77 @@
+#consul
+##consul安装
+去官网https://www.consul.io/ 下载最新版本或者使用项目里的安装包
+将consul_1.8.0_linux_amd64.zip copy至linux后进行安装并运行
+
+```
+#将安装包解压至指定目录
+unzip consul_1.8.0_linux_amd64.zip -d /usr/local/consul
+cd /usr/local/consul
+sudo nohup ./consul agent -dev -ui -client 0.0.0.0 &
+```
+访问 ip:8500 界面显示表明运行成功
+
+##git2consul安装
+```
+curl --silent --location https://rpm.nodesource.com/setup_10.x | sudo bash
+sudo yum -y install nodejs
+```
+如果yum下载失败的话执行以下代码后在重试
+```
+sudo yum clean all
+```
+如果存在多个 nodesoucre,执行以下命令删除,然后重新执行第一第二步:
+```
+sudo rm -fv /etc/yum.repos.d/nodesource*
+```
+接下来安装git2consul
+通过阿里下载
+```
+npm install -g git2consul --registry=https://registry.npm.taobao.org
+```
+下载成功后创建git2consul的配置文件
+```
+mkdir /user/local/gitconsul
+cd /user/local/gitconsul
+vi git2consul.json
+```
+将以下内容复制进去并做修改
+version  配置版本
+name 名称,指的是在consul里面的目录名称
+url 要同步的Git仓库
+branches 要同步的分支
+hooks.type 拉取模式
+hooks.interval 同步的间隔(分钟) 只能输入整数
+```
+{
+  "version": "1.0",
+  "repos": [
+    {
+      "name": "config",
+      "url": "你的git仓库",
+      "branches": [
+        "master"
+      ],
+      "include_branch_name": false,
+      "hooks": [
+        {
+          "type": "polling",
+          "interval": "1"
+        }
+      ]
+    }
+  ]
+}
+```
+设置服务器记住git地址账号密码
+```
+git config --global credential.helper store
+```
+启动git2consul后第一次需要输入账号密码后面就不需要在输入
+```
+git2consul --config-file /usr/local/git2consul/git2consul.json
+```
+录入账号密码后看运行日志启动成功后在consul上可以看到配置后可以换成守护进程形式启动
+```
+nohup git2consul --config-file /usr/local/git2consul/git2consul.json &
+```

BIN
consul/consul_1.8.0_linux_amd64.zip


+ 54 - 0
wei-test-cloud/pom.xml

@@ -0,0 +1,54 @@
+<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>
+
+    <parent>
+        <groupId>com.wei</groupId>
+        <artifactId>base-springframework-starter</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+
+    <packaging>pom</packaging>
+    <artifactId>wei-test-cloud</artifactId>
+
+    <modules>
+        <module>wei-test-cloud-api</module>
+        <module>wei-test-cloud-app</module>
+    </modules>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <!--	<repositories>
+            <repository>
+                <id></id>
+                <url></url>
+            </repository>
+        </repositories>
+        <pluginRepositories>
+            <pluginRepository>
+                <id></id>
+                <url></url>
+            </pluginRepository>
+        </pluginRepositories>
+        <distributionManagement>
+            <repository>
+                <id></id>
+                <url></url>
+            </repository>
+            <snapshotRepository>
+                <id></id>
+                <url></url>
+            </snapshotRepository>
+        </distributionManagement>-->
+</project>

+ 47 - 0
wei-test-cloud/wei-test-cloud-api/pom.xml

@@ -0,0 +1,47 @@
+<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>
+
+    <parent>
+        <groupId>com.wei</groupId>
+        <artifactId>wei-test-cloud</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>wei-test-cloud-api</artifactId>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <!--	<repositories>
+            <repository>
+                <id></id>
+                <url></url>
+            </repository>
+        </repositories>
+        <pluginRepositories>
+            <pluginRepository>
+                <id></id>
+                <url></url>
+            </pluginRepository>
+        </pluginRepositories>
+        <distributionManagement>
+            <repository>
+                <id></id>
+                <url></url>
+            </repository>
+            <snapshotRepository>
+                <id></id>
+                <url></url>
+            </snapshotRepository>
+        </distributionManagement>-->
+</project>

+ 14 - 0
wei-test-cloud/wei-test-cloud-api/src/main/java/com/wei/cloud/api/ApiService.java

@@ -0,0 +1,14 @@
+package com.wei.cloud.api;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@FeignClient(name = "wei-test-cloud")
+@RequestMapping("/apiService")
+public interface ApiService {
+
+    @GetMapping("/test")
+    String test(@RequestHeader("Filter-Enabled") String filterEnabled);
+}

BIN
wei-test-cloud/wei-test-cloud-api/target/classes/com/wei/cloud/api/ApiService.class


+ 56 - 0
wei-test-cloud/wei-test-cloud-app/pom.xml

@@ -0,0 +1,56 @@
+<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>
+
+    <parent>
+        <groupId>com.wei</groupId>
+        <artifactId>wei-test-cloud</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>wei-test-cloud-app</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.wei</groupId>
+            <artifactId>wei-test-cloud-api</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <!--	<repositories>
+            <repository>
+                <id></id>
+                <url></url>
+            </repository>
+        </repositories>
+        <pluginRepositories>
+            <pluginRepository>
+                <id></id>
+                <url></url>
+            </pluginRepository>
+        </pluginRepositories>
+        <distributionManagement>
+            <repository>
+                <id></id>
+                <url></url>
+            </repository>
+            <snapshotRepository>
+                <id></id>
+                <url></url>
+            </snapshotRepository>
+        </distributionManagement>-->
+</project>

+ 12 - 0
wei-test-cloud/wei-test-cloud-app/src/main/java/com/wei/cloud/TestCloudApplication.java

@@ -0,0 +1,12 @@
+package com.wei.cloud;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class TestCloudApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(TestCloudApplication.class, args);
+    }
+}

+ 28 - 0
wei-test-cloud/wei-test-cloud-app/src/main/java/com/wei/cloud/controller/TestController.java

@@ -0,0 +1,28 @@
+package com.wei.cloud.controller;
+
+import com.wei.base.springframework.constant.vo.RestfulVO;
+import com.wei.cloud.vo.UserVO;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+public class TestController {
+
+    private String test;
+
+    @GetMapping("/test")
+    public String test() {
+        return test;
+    }
+
+    @PostMapping("/test1")
+    public String test(@RequestBody UserVO userVO) {
+        System.err.println(userVO.toString());
+        return "test";
+    }
+
+    @PostMapping("/test2/{ttt}")
+    public RestfulVO<String> test2(@PathVariable("ttt") String ttt) {
+        System.err.println(ttt);
+        return new RestfulVO("test");
+    }
+}

+ 33 - 0
wei-test-cloud/wei-test-cloud-app/src/main/java/com/wei/cloud/vo/UserVO.java

@@ -0,0 +1,33 @@
+package com.wei.cloud.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 统一返回值
+ *
+ * @author : weierming
+ * @date : 2020/7/10
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserVO implements Serializable {
+
+    private static final long serialVersionUID = 6488177830405564354L;
+
+    private Long userId;
+
+    private String userName;
+
+    private Date date;
+
+    private List<UserVO> list;
+
+    private UserVO userVO;
+}

+ 15 - 0
wei-test-cloud/wei-test-cloud-app/src/main/resources/bootstrap.yml

@@ -0,0 +1,15 @@
+server:
+  port: 8102
+
+spring:
+  application:
+    name: wei-test-cloud
+  cloud:
+    consul:
+      # consul的IP
+      host: 192.168.11.128
+      # consul启动端口
+      port: 8500
+
+  profiles:
+    active: dev

+ 47 - 0
wei-test/wei-test-api/pom.xml

@@ -0,0 +1,47 @@
+<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>
+
+    <parent>
+        <groupId>com.wei</groupId>
+        <artifactId>wei-test</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>wei-test-api</artifactId>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <!--	<repositories>
+            <repository>
+                <id></id>
+                <url></url>
+            </repository>
+        </repositories>
+        <pluginRepositories>
+            <pluginRepository>
+                <id></id>
+                <url></url>
+            </pluginRepository>
+        </pluginRepositories>
+        <distributionManagement>
+            <repository>
+                <id></id>
+                <url></url>
+            </repository>
+            <snapshotRepository>
+                <id></id>
+                <url></url>
+            </snapshotRepository>
+        </distributionManagement>-->
+</project>

BIN
wei-test/wei-test-api/target/classes/com/wei/cloud/vo/UserVO.class


+ 56 - 0
wei-test/wei-test-app/pom.xml

@@ -0,0 +1,56 @@
+<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>
+
+    <parent>
+        <groupId>com.wei</groupId>
+        <artifactId>wei-test</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>wei-test-app</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.wei</groupId>
+            <artifactId>wei-test-cloud-api</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <!--	<repositories>
+            <repository>
+                <id></id>
+                <url></url>
+            </repository>
+        </repositories>
+        <pluginRepositories>
+            <pluginRepository>
+                <id></id>
+                <url></url>
+            </pluginRepository>
+        </pluginRepositories>
+        <distributionManagement>
+            <repository>
+                <id></id>
+                <url></url>
+            </repository>
+            <snapshotRepository>
+                <id></id>
+                <url></url>
+            </snapshotRepository>
+        </distributionManagement>-->
+</project>

+ 14 - 0
wei-test/wei-test-app/src/main/java/com/wei/test/TestApplication.java

@@ -0,0 +1,14 @@
+package com.wei.test;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+
+@EnableFeignClients(basePackages = "com.wei.cloud.api")
+@SpringBootApplication
+public class TestApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(TestApplication.class, args);
+    }
+}

+ 36 - 0
wei-test/wei-test-app/src/main/java/com/wei/test/controller/TestController.java

@@ -0,0 +1,36 @@
+package com.wei.test.controller;
+
+import com.wei.base.springframework.constant.vo.RestfulVO;
+import com.wei.cloud.api.ApiService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class TestController {
+
+    @Autowired
+    private ApiService apiService;
+
+    @Value("${test}")
+    private String test;
+
+    @GetMapping("/test")
+    public String test() {
+        return test;
+    }
+
+    @GetMapping("/testCloud")
+    public String testCloud() {
+        return apiService.test("true");
+    }
+
+    @PostMapping("/test2/{ttt}")
+    public RestfulVO<String> test2(@PathVariable("ttt") String ttt) {
+        System.err.println(ttt);
+        return new RestfulVO("test");
+    }
+}

+ 33 - 0
wei-test/wei-test-app/src/main/java/com/wei/test/vo/UserVO.java

@@ -0,0 +1,33 @@
+package com.wei.test.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 统一返回值
+ *
+ * @author : weierming
+ * @date : 2020/7/10
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserVO implements Serializable {
+
+    private static final long serialVersionUID = 6488177830405564354L;
+
+    private Long userId;
+
+    private String userName;
+
+    private Date date;
+
+    private List<UserVO> list;
+
+    private UserVO userVO;
+}

+ 39 - 0
wei-test/wei-test-app/src/main/resources/bootstrap.yml

@@ -0,0 +1,39 @@
+server:
+  port: 8101
+
+spring:
+  application:
+    name: wei-test
+  cloud:
+    consul:
+      # consul的IP
+      host: 192.168.11.128
+      # consul启动端口
+      port: 8500
+  profiles:
+    active: dev
+
+feign:
+  hystrix:
+    # 在feign中开启hystrix功能,默认情况下feign不开启hystrix功能
+    enabled: true
+  httpclient:
+    # 只要引入feign-httpclient包默认启用 不加此配置也可以
+    enabled: true
+
+# 配置hystrix的参数
+hystrix:
+  threadpool:
+    # default: 默认参数,作用的所有的hystrix的客户端,如果需要对某个具体的接口,可以写接口+方法名称
+    default:
+      coreSize: 500
+  command:
+    default:
+      fallback:
+        # 是否开启回退方法
+        enabled: true
+      execution:
+        isolation:
+          thread:
+            #超时时间 默认1000毫秒
+            timeoutInMilliseconds: 5000

+ 39 - 0
wei-test/wei-test-app/target/classes/bootstrap.yml

@@ -0,0 +1,39 @@
+server:
+  port: 8101
+
+spring:
+  application:
+    name: wei-test
+  cloud:
+    consul:
+      # consul的IP
+      host: 192.168.11.128
+      # consul启动端口
+      port: 8500
+  profiles:
+    active: dev
+
+feign:
+  hystrix:
+    # 在feign中开启hystrix功能,默认情况下feign不开启hystrix功能
+    enabled: true
+  httpclient:
+    # 只要引入feign-httpclient包默认启用 不加此配置也可以
+    enabled: true
+
+# 配置hystrix的参数
+hystrix:
+  threadpool:
+    # default: 默认参数,作用的所有的hystrix的客户端,如果需要对某个具体的接口,可以写接口+方法名称
+    default:
+      coreSize: 500
+  command:
+    default:
+      fallback:
+        # 是否开启回退方法
+        enabled: true
+      execution:
+        isolation:
+          thread:
+            #超时时间 默认1000毫秒
+            timeoutInMilliseconds: 5000

BIN
wei-test/wei-test-app/target/classes/com/wei/test/TestApplication.class


BIN
wei-test/wei-test-app/target/classes/com/wei/test/controller/TestController.class


BIN
wei-test/wei-test-app/target/classes/com/wei/test/vo/UserVO.class