소스 검색

cloud init

wuwen 6 년 전
부모
커밋
39163649f6
54개의 변경된 파일2207개의 추가작업 그리고 0개의 파일을 삭제
  1. 39 0
      ssj_aijia/README.md
  2. 102 0
      ssj_aijia/pom.xml
  3. 34 0
      ssj_aijia/ssj-aijia-api/README.md
  4. 43 0
      ssj_aijia/ssj-aijia-api/log/run.log
  5. 54 0
      ssj_aijia/ssj-aijia-api/pom.xml
  6. 24 0
      ssj_aijia/ssj-aijia-api/src/main/java/com/minbo/cloud/alibaba/Application.java
  7. 24 0
      ssj_aijia/ssj-aijia-api/src/main/java/com/minbo/cloud/alibaba/controller/InitController.java
  8. 60 0
      ssj_aijia/ssj-aijia-api/src/main/java/com/minbo/cloud/alibaba/util/JsonResult.java
  9. 36 0
      ssj_aijia/ssj-aijia-api/src/main/java/com/minbo/cloud/alibaba/util/ResultCode.java
  10. 50 0
      ssj_aijia/ssj-aijia-api/src/main/java/com/minbo/cloud/alibaba/web/CustomHttpInterceptor.java
  11. 60 0
      ssj_aijia/ssj-aijia-api/src/main/java/com/minbo/cloud/alibaba/web/SwaggerConfig.java
  12. 44 0
      ssj_aijia/ssj-aijia-api/src/main/java/com/minbo/cloud/alibaba/web/WebConfig.java
  13. 23 0
      ssj_aijia/ssj-aijia-api/src/main/resources/bootstrap.yaml
  14. 42 0
      ssj_aijia/ssj-aijia-api/src/main/resources/logback.xml
  15. 34 0
      ssj_aijia/ssj-aijia-common-config/README.md
  16. 61 0
      ssj_aijia/ssj-aijia-common-config/log/run.log
  17. 3 0
      ssj_aijia/ssj-aijia-common-config/log/run.log.2020-06-16.0
  18. 50 0
      ssj_aijia/ssj-aijia-common-config/pom.xml
  19. 24 0
      ssj_aijia/ssj-aijia-common-config/src/main/java/com/minbo/cloud/alibaba/Application.java
  20. 39 0
      ssj_aijia/ssj-aijia-common-config/src/main/java/com/minbo/cloud/alibaba/controller/InitController.java
  21. 60 0
      ssj_aijia/ssj-aijia-common-config/src/main/java/com/minbo/cloud/alibaba/util/JsonResult.java
  22. 36 0
      ssj_aijia/ssj-aijia-common-config/src/main/java/com/minbo/cloud/alibaba/util/ResultCode.java
  23. 50 0
      ssj_aijia/ssj-aijia-common-config/src/main/java/com/minbo/cloud/alibaba/web/CustomHttpInterceptor.java
  24. 60 0
      ssj_aijia/ssj-aijia-common-config/src/main/java/com/minbo/cloud/alibaba/web/SwaggerConfig.java
  25. 44 0
      ssj_aijia/ssj-aijia-common-config/src/main/java/com/minbo/cloud/alibaba/web/WebConfig.java
  26. 19 0
      ssj_aijia/ssj-aijia-common-config/src/main/resources/bootstrap.yaml
  27. 42 0
      ssj_aijia/ssj-aijia-common-config/src/main/resources/logback.xml
  28. 34 0
      ssj_aijia/ssj-aijia-common-model/README.md
  29. 53 0
      ssj_aijia/ssj-aijia-common-model/pom.xml
  30. 24 0
      ssj_aijia/ssj-aijia-common-model/src/main/java/com/minbo/cloud/alibaba/Application.java
  31. 30 0
      ssj_aijia/ssj-aijia-common-model/src/main/java/com/minbo/cloud/alibaba/controller/InitController.java
  32. 50 0
      ssj_aijia/ssj-aijia-common-model/src/main/java/com/minbo/cloud/alibaba/web/CustomHttpInterceptor.java
  33. 60 0
      ssj_aijia/ssj-aijia-common-model/src/main/java/com/minbo/cloud/alibaba/web/SwaggerConfig.java
  34. 44 0
      ssj_aijia/ssj-aijia-common-model/src/main/java/com/minbo/cloud/alibaba/web/WebConfig.java
  35. 13 0
      ssj_aijia/ssj-aijia-common-model/src/main/resources/bootstrap.yaml
  36. 42 0
      ssj_aijia/ssj-aijia-common-model/src/main/resources/logback.xml
  37. 34 0
      ssj_aijia/ssj-aijia-common-utils/README.md
  38. 53 0
      ssj_aijia/ssj-aijia-common-utils/pom.xml
  39. 24 0
      ssj_aijia/ssj-aijia-common-utils/src/main/java/com/minbo/cloud/alibaba/Application.java
  40. 30 0
      ssj_aijia/ssj-aijia-common-utils/src/main/java/com/minbo/cloud/alibaba/controller/InitController.java
  41. 50 0
      ssj_aijia/ssj-aijia-common-utils/src/main/java/com/minbo/cloud/alibaba/web/CustomHttpInterceptor.java
  42. 60 0
      ssj_aijia/ssj-aijia-common-utils/src/main/java/com/minbo/cloud/alibaba/web/SwaggerConfig.java
  43. 44 0
      ssj_aijia/ssj-aijia-common-utils/src/main/java/com/minbo/cloud/alibaba/web/WebConfig.java
  44. 13 0
      ssj_aijia/ssj-aijia-common-utils/src/main/resources/bootstrap.yaml
  45. 42 0
      ssj_aijia/ssj-aijia-common-utils/src/main/resources/logback.xml
  46. 34 0
      ssj_aijia/ssj-aijia-sys/README.md
  47. 53 0
      ssj_aijia/ssj-aijia-sys/pom.xml
  48. 24 0
      ssj_aijia/ssj-aijia-sys/src/main/java/com/minbo/cloud/alibaba/Application.java
  49. 30 0
      ssj_aijia/ssj-aijia-sys/src/main/java/com/minbo/cloud/alibaba/controller/InitController.java
  50. 50 0
      ssj_aijia/ssj-aijia-sys/src/main/java/com/minbo/cloud/alibaba/web/CustomHttpInterceptor.java
  51. 60 0
      ssj_aijia/ssj-aijia-sys/src/main/java/com/minbo/cloud/alibaba/web/SwaggerConfig.java
  52. 44 0
      ssj_aijia/ssj-aijia-sys/src/main/java/com/minbo/cloud/alibaba/web/WebConfig.java
  53. 13 0
      ssj_aijia/ssj-aijia-sys/src/main/resources/bootstrap.yaml
  54. 42 0
      ssj_aijia/ssj-aijia-sys/src/main/resources/logback.xml

+ 39 - 0
ssj_aijia/README.md

@@ -0,0 +1,39 @@
+# 项目简介
+
+SpringCloud Alibaba系列(基于Greenwich版本,SpringBoot2.1.7版本实现)
+
+教程地址有(持续更新中...):
+
+1. [SpringCloud Alibaba从入门到精通教程(一)- 配置中心Nacos快速入门介绍·Server启动安装](https://blog.csdn.net/hemin1003/article/details/105517901)
+2. [SpringCloud Alibaba从入门到精通教程(二)- 项目中快速集成配置中心·Nacos-服务注册发现功能 springcloud-alibaba-nacos-discovery](https://hemin.blog.csdn.net/article/details/105517927)
+3. [SpringCloud Alibaba从入门到精通教程(三)- 项目中快速集成配置中心·Nacos-配置中心管理功能 springcloud-alibaba-nacos-config](https://hemin.blog.csdn.net/article/details/105517950)
+4. [SpringCloud Alibaba从入门到精通教程(四)- 流控组件Sentinel快速入门介绍·Server启动安装](https://hemin.blog.csdn.net/article/details/105517988)
+5. [SpringCloud Alibaba从入门到精通教程(五)- 项目中快速集成·限流组件Sentinel springcloud-alibaba-sentinel](https://hemin.blog.csdn.net/article/details/105517973)
+6. SpringCloud Alibaba从入门到精通教程(六)- 项目中快速集成·MQ消息组件RocketMQ springcloud-alibaba-rocketmq
+7. SpringCloud Alibaba从入门到精通教程(七)- 项目中快速集成·分布式事务组件Seata springcloud-alibaba-seata
+8. SpringCloud Alibaba从入门到精通教程(八)- 项目中快速集成·服务治理组件Dubbo springcloud-alibaba-dubbo
+9. SpringCloud Alibaba从入门到精通教程(九)- 项目中快速集成·限流组件Sentinel之限流数据源 springcloud-alibaba-sentinel-datasource
+10. SpringCloud Alibaba从入门到精通教程(十)- 项目中快速集成·限流组件Sentinel之限流网关 springcloud-alibaba-sentinel-gateway
+11. SpringCloud Alibaba从入门到精通教程(十一)- 项目中快速集成·限流组件Sentinel之断路器 springcloud-alibaba-circuitbreaker-sentinel
+
+## 我的教程系列
+
+1. [SpringCloud从入门到精通教程](https://blog.csdn.net/hemin1003/article/details/82043611)
+
+2. [SpringBoot从入门到精通教程](https://blog.csdn.net/hemin1003/article/details/82038244)
+
+3. [SpringCloud Alibaba从入门到精通教程](https://blog.csdn.net/hemin1003/article/details/82043611)
+
+## [关于我](http://heminit.com/about/)
+
+欢迎交流问题,可加我的个人QQ 469580884,或群号 751925591,一起探讨交流问题
+
+[我的博客地址-博客专家](http://blog.csdn.net/hemin1003)
+
+[个人域名](http://heminit.com)
+
+## 感谢
+如果觉得内容赞,您可以请我喝一杯咖啡:
+<br/>
+<img src="http://cdn.popstar.toponegames.mobi/img/wechat.jpeg" width="240px" height="240px" />&nbsp;&nbsp;&nbsp;&nbsp;
+<img src="http://cdn.popstar.toponegames.mobi/img/alipay.jpeg" width="240px" height="240px" />

+ 102 - 0
ssj_aijia/pom.xml

@@ -0,0 +1,102 @@
+<?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.minbo.cloud.alibaba</groupId>
+	<artifactId>spring-cloud-alibaba-study-parent</artifactId>
+	<version>0.0.1-SNAPSHOT</version>
+	<packaging>pom</packaging>
+
+	<parent>
+		<groupId>org.springframework.boot</groupId>
+		<artifactId>spring-boot-starter-parent</artifactId>
+		<version>2.1.7.RELEASE</version>
+	</parent>
+
+	<modules>
+		<module>ssj-aijia-api</module>
+		<module>ssj-aijia-sys</module>
+		
+		<module>ssj-aijia-common-config</module>
+		<module>ssj-aijia-common-model</module>
+		<module>ssj-aijia-common-utils</module>
+	</modules>
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<java.version>1.8</java.version>
+		<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
+		<alibaba-spring-cloud.version>0.9.0.RELEASE</alibaba-spring-cloud.version>
+		<nacos.version>0.2.2.RELEASE</nacos.version>
+		<swagger.version>2.9.2</swagger.version>
+	</properties>
+
+	<dependencyManagement>
+		<dependencies>
+		
+			<dependency>
+				<groupId>org.springframework.cloud</groupId>
+				<artifactId>ssj-aijia-api</artifactId>
+				<version>${spring-cloud.version}</version>
+				<type>pom</type>
+				<scope>import</scope>
+			</dependency>
+			
+			
+			
+			<dependency>
+				<groupId>org.springframework.cloud</groupId>
+				<artifactId>ssj-aijia-common-config</artifactId>
+				<version>${alibaba-spring-cloud.version}</version>
+				<type>pom</type>
+				<scope>import</scope>
+			</dependency>
+			
+			
+			
+			<dependency>
+				<groupId>org.springframework.cloud</groupId>
+				<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+				<version>${nacos.version}</version>
+			</dependency>
+			
+			
+			
+			<!-- swagger集成 -->
+			<dependency>
+				<groupId>io.springfox</groupId>
+				<artifactId>springfox-swagger2</artifactId>
+				<version>${swagger.version}</version>
+			</dependency>
+			<!-- 默认swagger-ui -->
+			<dependency>
+				<groupId>io.springfox</groupId>
+				<artifactId>springfox-swagger-ui</artifactId>
+				<version>${swagger.version}</version>
+			</dependency>
+			<!-- 更易用第三方swagger-ui组件 -->
+			<dependency>
+				<groupId>com.github.xiaoymin</groupId>
+				<artifactId>swagger-bootstrap-ui</artifactId>
+				<version>1.9.3</version>
+			</dependency>
+			<dependency>
+				<groupId>net.sf.json-lib</groupId>
+				<artifactId>json-lib-ext-spring</artifactId>
+				<version>1.0.2</version>
+			</dependency>
+		</dependencies>
+	</dependencyManagement>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
+
+</project>

+ 34 - 0
ssj_aijia/ssj-aijia-api/README.md

@@ -0,0 +1,34 @@
+# microservice-alibaba-sentinel
+
+【项目中快速集成·限流组件Sentinel】技术点
+
+功能介绍
+
+1. 项目中快速集成·限流组件Sentinel
+
+## 本项目教程
+
+[项目中快速集成·限流组件Sentinel](https://hemin.blog.csdn.net/article/details/105517973)
+
+## 该系列教程
+
+[SpringCloud Alibaba从入门到精通教程](https://blog.csdn.net/hemin1003/article/details/82043611)
+
+## 个人说明
+
+期望和大家”一起学习,一起成长“,共勉,O(∩_∩)O谢谢
+
+不讲虚的,只做实干家
+
+Talk is cheap,show me the code
+
+<br/>
+
+
+## [关于我](http://heminit.com/about/)
+
+欢迎交流问题,可加我的个人QQ 469580884,或Q群号 751925591,一起探讨交流问题
+
+[我的博客地址](http://blog.csdn.net/hemin1003)
+
+[个人域名](http://heminit.com)

+ 43 - 0
ssj_aijia/ssj-aijia-api/log/run.log

@@ -0,0 +1,43 @@
+2020-06-17 09:29:27,243 [main] [com.minbo.cloud.alibaba.Application] [INFO] (SpringApplication.java:651)- The following profiles are active: dev
+2020-06-17 09:29:29,690 [main] [com.minbo.cloud.alibaba.Application] [INFO] (StartupInfoLogger.java:59)- Started Application in 3.626 seconds (JVM running for 4.087)
+2020-06-17 09:30:09,075 [main] [com.minbo.cloud.alibaba.Application] [INFO] (SpringApplication.java:651)- The following profiles are active: dev
+2020-06-17 09:30:11,497 [main] [com.minbo.cloud.alibaba.Application] [INFO] (StartupInfoLogger.java:59)- Started Application in 3.585 seconds (JVM running for 4.026)
+2020-06-17 09:30:43,002 [http-nio-9092-exec-1] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 璇锋眰鍙傛暟, url: http://localhost:9092/hello, method: GET, query-params: null, run-time: 1
+2020-06-17 09:30:43,009 [http-nio-9092-exec-1] [com.minbo.cloud.alibaba.controller.InitController] [INFO] (InitController.java:21)- microservice-alibaba-sentinel
+2020-06-17 09:30:43,100 [http-nio-9092-exec-2] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 璇锋眰鍙傛暟, url: http://localhost:9092/error, method: GET, query-params: null, run-time: 1
+2020-06-17 09:30:44,431 [http-nio-9092-exec-3] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 璇锋眰鍙傛暟, url: http://localhost:9092/hello, method: GET, query-params: null, run-time: 0
+2020-06-17 09:30:44,431 [http-nio-9092-exec-3] [com.minbo.cloud.alibaba.controller.InitController] [INFO] (InitController.java:21)- microservice-alibaba-sentinel
+2020-06-17 09:30:44,606 [http-nio-9092-exec-5] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 璇锋眰鍙傛暟, url: http://localhost:9092/hello, method: GET, query-params: null, run-time: 0
+2020-06-17 09:30:44,607 [http-nio-9092-exec-5] [com.minbo.cloud.alibaba.controller.InitController] [INFO] (InitController.java:21)- microservice-alibaba-sentinel
+2020-06-17 09:30:44,772 [http-nio-9092-exec-6] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 璇锋眰鍙傛暟, url: http://localhost:9092/hello, method: GET, query-params: null, run-time: 0
+2020-06-17 09:30:44,773 [http-nio-9092-exec-6] [com.minbo.cloud.alibaba.controller.InitController] [INFO] (InitController.java:21)- microservice-alibaba-sentinel
+2020-06-17 09:30:44,924 [http-nio-9092-exec-7] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 璇锋眰鍙傛暟, url: http://localhost:9092/hello, method: GET, query-params: null, run-time: 0
+2020-06-17 09:30:44,924 [http-nio-9092-exec-7] [com.minbo.cloud.alibaba.controller.InitController] [INFO] (InitController.java:21)- microservice-alibaba-sentinel
+2020-06-17 09:30:45,061 [http-nio-9092-exec-4] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 璇锋眰鍙傛暟, url: http://localhost:9092/hello, method: GET, query-params: null, run-time: 0
+2020-06-17 09:30:45,062 [http-nio-9092-exec-4] [com.minbo.cloud.alibaba.controller.InitController] [INFO] (InitController.java:21)- microservice-alibaba-sentinel
+2020-06-17 09:30:45,216 [http-nio-9092-exec-8] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 璇锋眰鍙傛暟, url: http://localhost:9092/hello, method: GET, query-params: null, run-time: 0
+2020-06-17 09:30:45,217 [http-nio-9092-exec-8] [com.minbo.cloud.alibaba.controller.InitController] [INFO] (InitController.java:21)- microservice-alibaba-sentinel
+2020-06-17 09:30:45,352 [http-nio-9092-exec-9] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 璇锋眰鍙傛暟, url: http://localhost:9092/hello, method: GET, query-params: null, run-time: 0
+2020-06-17 09:30:45,353 [http-nio-9092-exec-9] [com.minbo.cloud.alibaba.controller.InitController] [INFO] (InitController.java:21)- microservice-alibaba-sentinel
+2020-06-17 09:30:45,500 [http-nio-9092-exec-10] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 璇锋眰鍙傛暟, url: http://localhost:9092/hello, method: GET, query-params: null, run-time: 0
+2020-06-17 09:30:45,500 [http-nio-9092-exec-10] [com.minbo.cloud.alibaba.controller.InitController] [INFO] (InitController.java:21)- microservice-alibaba-sentinel
+2020-06-17 09:30:45,660 [http-nio-9092-exec-1] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 璇锋眰鍙傛暟, url: http://localhost:9092/hello, method: GET, query-params: null, run-time: 0
+2020-06-17 09:30:45,661 [http-nio-9092-exec-1] [com.minbo.cloud.alibaba.controller.InitController] [INFO] (InitController.java:21)- microservice-alibaba-sentinel
+2020-06-17 09:30:45,812 [http-nio-9092-exec-2] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 璇锋眰鍙傛暟, url: http://localhost:9092/hello, method: GET, query-params: null, run-time: 0
+2020-06-17 09:30:45,813 [http-nio-9092-exec-2] [com.minbo.cloud.alibaba.controller.InitController] [INFO] (InitController.java:21)- microservice-alibaba-sentinel
+2020-06-17 09:31:48,679 [main] [com.minbo.cloud.alibaba.Application] [INFO] (SpringApplication.java:651)- The following profiles are active: dev
+2020-06-17 09:31:51,138 [main] [com.minbo.cloud.alibaba.Application] [INFO] (StartupInfoLogger.java:59)- Started Application in 3.653 seconds (JVM running for 4.089)
+2020-06-17 09:32:12,935 [http-nio-9092-exec-2] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9092/hello, method: GET, query-params: null, run-time: 1
+2020-06-17 09:32:12,940 [http-nio-9092-exec-2] [com.minbo.cloud.alibaba.controller.InitController] [INFO] (InitController.java:21)- microservice-alibaba-sentinel
+2020-06-17 09:32:13,188 [http-nio-9092-exec-3] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9092/hello, method: GET, query-params: null, run-time: 0
+2020-06-17 09:32:13,189 [http-nio-9092-exec-3] [com.minbo.cloud.alibaba.controller.InitController] [INFO] (InitController.java:21)- microservice-alibaba-sentinel
+2020-06-17 09:32:13,423 [http-nio-9092-exec-4] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9092/hello, method: GET, query-params: null, run-time: 0
+2020-06-17 09:32:13,424 [http-nio-9092-exec-4] [com.minbo.cloud.alibaba.controller.InitController] [INFO] (InitController.java:21)- microservice-alibaba-sentinel
+2020-06-17 09:32:13,596 [http-nio-9092-exec-5] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9092/hello, method: GET, query-params: null, run-time: 0
+2020-06-17 09:32:13,596 [http-nio-9092-exec-5] [com.minbo.cloud.alibaba.controller.InitController] [INFO] (InitController.java:21)- microservice-alibaba-sentinel
+2020-06-17 09:32:13,765 [http-nio-9092-exec-9] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9092/hello, method: GET, query-params: null, run-time: 0
+2020-06-17 09:32:13,766 [http-nio-9092-exec-9] [com.minbo.cloud.alibaba.controller.InitController] [INFO] (InitController.java:21)- microservice-alibaba-sentinel
+2020-06-17 09:32:13,936 [http-nio-9092-exec-10] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9092/hello, method: GET, query-params: null, run-time: 1
+2020-06-17 09:32:13,936 [http-nio-9092-exec-10] [com.minbo.cloud.alibaba.controller.InitController] [INFO] (InitController.java:21)- microservice-alibaba-sentinel
+2020-06-17 09:32:14,087 [http-nio-9092-exec-6] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9092/hello, method: GET, query-params: null, run-time: 0
+2020-06-17 09:32:14,088 [http-nio-9092-exec-6] [com.minbo.cloud.alibaba.controller.InitController] [INFO] (InitController.java:21)- microservice-alibaba-sentinel

+ 54 - 0
ssj_aijia/ssj-aijia-api/pom.xml

@@ -0,0 +1,54 @@
+<?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>
+
+	<artifactId>microservice-alibaba-sentinel</artifactId>
+	<packaging>jar</packaging>
+
+	<parent>
+		<groupId>com.minbo.cloud.alibaba</groupId>
+		<artifactId>spring-cloud-alibaba-study-parent</artifactId>
+		<version>0.0.1-SNAPSHOT</version>
+	</parent>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-web</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.projectlombok</groupId>
+			<artifactId>lombok</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>io.springfox</groupId>
+			<artifactId>springfox-swagger2</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>io.springfox</groupId>
+			<artifactId>springfox-swagger-ui</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>com.github.xiaoymin</groupId>
+			<artifactId>swagger-bootstrap-ui</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>net.sf.json-lib</groupId>
+			<artifactId>json-lib-ext-spring</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
+		</dependency>
+	</dependencies>
+</project>

+ 24 - 0
ssj_aijia/ssj-aijia-api/src/main/java/com/minbo/cloud/alibaba/Application.java

@@ -0,0 +1,24 @@
+package com.minbo.cloud.alibaba;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+
+import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI;
+
+/**
+ * 程序主入口
+ * 
+ * @author Minbo
+ *
+ */
+@SpringBootApplication
+@EnableSwaggerBootstrapUI
+@EnableDiscoveryClient
+public class Application {
+
+	public static void main(String[] args) {
+		SpringApplication.run(Application.class, args);
+	}
+
+}

+ 24 - 0
ssj_aijia/ssj-aijia-api/src/main/java/com/minbo/cloud/alibaba/controller/InitController.java

@@ -0,0 +1,24 @@
+package com.minbo.cloud.alibaba.controller;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * @author Minbo
+ */
+@RestController
+@Slf4j
+@Api(tags = { "init" })
+public class InitController {
+
+	@ApiOperation(value = "欢迎入口", httpMethod = "GET")
+	@GetMapping("/hello")
+	public String hello() {
+		log.info("microservice-alibaba-sentinel");
+		return "Hello, greetings from microservice-alibaba-sentinel";
+	}
+}

+ 60 - 0
ssj_aijia/ssj-aijia-api/src/main/java/com/minbo/cloud/alibaba/util/JsonResult.java

@@ -0,0 +1,60 @@
+package com.minbo.cloud.alibaba.util;
+
+import net.sf.json.JSONObject;
+
+public class JsonResult {
+	private String code;
+	private String message;
+	private Object data;
+
+	public JsonResult() {
+		this.setCode(ResultCode.SUCCESS);
+		this.setMessage(ResultCode.SUCCESS.msg());
+	}
+
+	public JsonResult(ResultCode code) {
+		this.setCode(code);
+		this.setMessage(code.msg());
+	}
+
+	public JsonResult(ResultCode code, String data) {
+		this.setCode(code);
+		this.setMessage(code.msg());
+		this.setData(data);
+	}
+
+	public JsonResult(ResultCode code, Object data) {
+		this.setCode(code);
+		this.setMessage(code.msg());
+		this.setData(data);
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(ResultCode code) {
+		this.code = code.val();
+	}
+
+	public String getMessage() {
+		return message;
+	}
+
+	public void setMessage(String message) {
+		this.message = message;
+	}
+
+	public Object getData() {
+		return data;
+	}
+
+	public void setData(Object data) {
+		this.data = data;
+	}
+
+	public String toJsonString() {
+		JSONObject json = JSONObject.fromObject(this);
+		return json.toString();
+	}
+}

+ 36 - 0
ssj_aijia/ssj-aijia-api/src/main/java/com/minbo/cloud/alibaba/util/ResultCode.java

@@ -0,0 +1,36 @@
+package com.minbo.cloud.alibaba.util;
+
+public enum ResultCode {
+
+	/** 成功 */
+	SUCCESS("200", "成功"),
+
+	/** 数据为空 */
+	SUCCESS_NO_DATA("201", "数据为空"),
+
+	/** 用户不存在 */
+	SUCCESS_NO_USER("202", "用户不存在"),
+
+	/** 今天的量已经跑光了 */
+	SUCCESS_ALL_GONE("203", "今天的量已经跑光了"),
+
+	/** 失败,请重试 */
+	SUCCESS_FAIL("204", "失败,请重试");
+
+	private ResultCode(String val, String msg) {
+		this.val = val;
+		this.msg = msg;
+	}
+
+	public String val() {
+		return val;
+	}
+
+	public String msg() {
+		return msg;
+	}
+
+	private String val;
+	private String msg;
+
+}

+ 50 - 0
ssj_aijia/ssj-aijia-api/src/main/java/com/minbo/cloud/alibaba/web/CustomHttpInterceptor.java

@@ -0,0 +1,50 @@
+package com.minbo.cloud.alibaba.web;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 拦截处理类
+ * 
+ * @author Minbo
+ */
+@Component
+@Slf4j
+@RefreshScope
+public class CustomHttpInterceptor extends HandlerInterceptorAdapter {
+
+	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
+			throws Exception {
+		long start = System.currentTimeMillis();
+		String url = request.getRequestURL().toString();
+		String method = request.getMethod();
+		String queryString = "";
+		// 去掉最后一个空格
+		Map<String, String[]> params = request.getParameterMap();
+		for (String key : params.keySet()) {
+			String[] values = params.get(key);
+			for (int i = 0; i < values.length; i++) {
+				String value = values[i];
+				queryString += key + "=" + value + "&";
+			}
+		}
+		// URL 参数
+		queryString = queryString.equals("") ? null : queryString.substring(0, queryString.length() - 1);
+
+		long end = System.currentTimeMillis();
+
+		log.info(String.format("请求参数, url: %s, method: %s, query-params: %s, run-time: %s", url, method, queryString,
+				(end - start) + ""));
+
+		return true;
+	}
+
+}

+ 60 - 0
ssj_aijia/ssj-aijia-api/src/main/java/com/minbo/cloud/alibaba/web/SwaggerConfig.java

@@ -0,0 +1,60 @@
+package com.minbo.cloud.alibaba.web;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.ParameterBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.schema.ModelRef;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.service.Parameter;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+@Configuration
+@EnableSwagger2
+public class SwaggerConfig {
+
+	/**
+	 * 创建一个Docket对象 调用select()方法, 生成ApiSelectorBuilder对象实例,该对象负责定义外漏的API入口
+	 * 通过使用RequestHandlerSelectors和PathSelectors来提供Predicate,在此我们使用any()方法,将所有API都通过Swagger进行文档管理
+	 * 
+	 * @return
+	 */
+	@Bean
+	public Docket createRestApi() {
+		// 定义全局header参数
+		ParameterBuilder useridPar = new ParameterBuilder();
+		List<Parameter> pars = new ArrayList<>();
+		useridPar.name("access_token").defaultValue("").description("访问身份令牌").modelRef(new ModelRef("string"))
+				.parameterType("header").required(false).build();
+		pars.add(useridPar.build());
+
+		return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
+				// 如果不想将所有的接口都通过swagger管理的话,可以将RequestHandlerSelectors.any()修改为RequestHandlerSelectors.basePackage()
+				// .apis(RequestHandlerSelectors.any())
+				.apis(RequestHandlerSelectors.basePackage("com.minbo")).paths(PathSelectors.any()).build()
+				.globalOperationParameters(pars);
+	}
+
+	@SuppressWarnings("deprecation")
+	private ApiInfo apiInfo() {
+		return new ApiInfoBuilder()
+				// 标题
+				.title("在线接口测试平台:microservice-alibaba-sentinel服务")
+				// 简介
+				.description("rest接口层:接口服务")
+				// 服务条款
+				.termsOfServiceUrl("https://blog.csdn.net/hemin1003")
+				// 作者个人信息
+				.contact("Minbo.He")
+				// 版本
+				.version("1.0").build();
+	}
+}

+ 44 - 0
ssj_aijia/ssj-aijia-api/src/main/java/com/minbo/cloud/alibaba/web/WebConfig.java

@@ -0,0 +1,44 @@
+package com.minbo.cloud.alibaba.web;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
+
+/**
+ * 拦截器定义
+ * 
+ * @author Minbo.He
+ */
+@Configuration
+public class WebConfig extends WebMvcConfigurationSupport {
+
+	// 让bean提前加载,让拦截器中的@Autowired生效
+	@Bean
+	public HandlerInterceptor getInterceptor() {
+		return new CustomHttpInterceptor();
+	}
+
+	@Override
+	public void addResourceHandlers(ResourceHandlerRegistry registry) {
+		// 解决 swagger-ui.html 404报错
+		registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
+		registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
+
+		// 解决 doc.html 404 报错
+		registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
+	}
+
+	/**
+	 * 可定义多个拦截器
+	 */
+	@Override
+	public void addInterceptors(InterceptorRegistry registry) {
+		// 定义过滤拦截的url名称,拦截所有请求
+		registry.addInterceptor(this.getInterceptor()).addPathPatterns("/**");
+		super.addInterceptors(registry);
+	}
+
+}

+ 23 - 0
ssj_aijia/ssj-aijia-api/src/main/resources/bootstrap.yaml

@@ -0,0 +1,23 @@
+spring:
+   application:
+      name: microservice-alibaba-nacos-config
+   profiles:
+      active: dev
+   cloud:
+      nacos:
+         discovery:
+            server-addr: 127.0.0.1:8848
+            namespace: 45702247-e8d9-4cca-a7d5-7ef302b3b4ce
+         config:
+            server-addr: 127.0.0.1:8848
+            namespace: 45702247-e8d9-4cca-a7d5-7ef302b3b4ce
+            file-extension: properties
+            shared-dataids: microservice-alibaba-nacos-config.properties
+            refreshable-dataids: microservice-alibaba-nacos-config.properties
+      sentinel:
+         transport:
+            port: 8719 # 默认数据端口
+            dashboard: 127.0.0.1:9191
+# server
+server:
+   port: 9092

+ 42 - 0
ssj_aijia/ssj-aijia-api/src/main/resources/logback.xml

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+	<!-- %d日期,%t线程名,%c类的全名,%p日志级别,%file文件名,%line行数,%m%n输出的信息 -->
+	<!-- 控制台输出配置 -->
+	<appender name="STDOUT"
+		class="ch.qos.logback.core.ConsoleAppender">
+		<encoder>
+			<pattern>%d [%t] [%c] [%p] (%file:%line\)- %m%n</pattern>
+			<charset>UTF-8</charset>
+		</encoder>
+	</appender>
+	<!-- 日志文件配置 -->
+	<appender name="baselog"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<File>log/run.log</File>
+		<rollingPolicy
+			class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>log/run.log.%d.%i</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy
+				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<!-- 每一个日志文件最大size -->
+				<maxFileSize>64 MB</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<!-- 保留天数 -->
+			<maxHistory>7</maxHistory>
+			<cleanHistoryOnStart>true</cleanHistoryOnStart>
+		</rollingPolicy>
+		<encoder>
+			<pattern>
+				%d [%t] [%c] [%p] (%file:%line\)- %m%n
+			</pattern>
+			<charset>UTF-8</charset> <!-- 此处设置字符集 -->
+		</encoder>
+	</appender>
+	<root level="INFO">
+		<appender-ref ref="STDOUT" />
+	</root>
+	<!-- 定义日志输出的package包名 -->
+	<logger name="com.minbo" level="DEBUG">
+		<appender-ref ref="baselog" />
+	</logger>
+</configuration>

+ 34 - 0
ssj_aijia/ssj-aijia-common-config/README.md

@@ -0,0 +1,34 @@
+# microservice-alibaba-nacos-config
+
+【项目中快速集成配置中心Nacos-配置中心管理功能】技术点
+
+功能介绍
+
+1. 项目中快速集成配置中心Nacos-配置中心管理功能
+
+## 本项目教程
+
+[项目中快速集成配置中心Nacos-配置中心管理功能](https://hemin.blog.csdn.net/article/details/105517950)
+
+## 该系列教程
+
+[SpringCloud Alibaba从入门到精通教程](https://blog.csdn.net/hemin1003/article/details/82043611)
+
+## 个人说明
+
+期望和大家”一起学习,一起成长“,共勉,O(∩_∩)O谢谢
+
+不讲虚的,只做实干家
+
+Talk is cheap,show me the code
+
+<br/>
+
+
+## [关于我](http://heminit.com/about/)
+
+欢迎交流问题,可加我的个人QQ 469580884,或Q群号 751925591,一起探讨交流问题
+
+[我的博客地址](http://blog.csdn.net/hemin1003)
+
+[个人域名](http://heminit.com)

+ 61 - 0
ssj_aijia/ssj-aijia-common-config/log/run.log

@@ -0,0 +1,61 @@
+2020-06-17 09:16:35,338 [main] [com.minbo.cloud.alibaba.Application] [INFO] (SpringApplication.java:651)- The following profiles are active: dev
+2020-06-17 09:17:25,198 [main] [com.minbo.cloud.alibaba.Application] [INFO] (SpringApplication.java:651)- The following profiles are active: dev
+2020-06-17 09:18:20,820 [main] [com.minbo.cloud.alibaba.Application] [INFO] (SpringApplication.java:651)- The following profiles are active: dev
+2020-06-17 09:23:29,842 [main] [com.minbo.cloud.alibaba.Application] [INFO] (SpringApplication.java:651)- The following profiles are active: dev
+2020-06-17 09:23:32,088 [main] [com.minbo.cloud.alibaba.Application] [INFO] (StartupInfoLogger.java:59)- Started Application in 3.41 seconds (JVM running for 3.833)
+2020-06-17 09:25:31,543 [main] [com.minbo.cloud.alibaba.Application] [INFO] (SpringApplication.java:651)- The following profiles are active: dev
+2020-06-17 09:25:33,629 [main] [com.minbo.cloud.alibaba.Application] [INFO] (StartupInfoLogger.java:59)- Started Application in 3.267 seconds (JVM running for 3.697)
+2020-06-17 09:26:06,307 [http-nio-9091-exec-1] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/doc.html, method: GET, query-params: null, run-time: 1
+2020-06-17 09:26:06,362 [http-nio-9091-exec-2] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/ext/i18n.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,362 [http-nio-9091-exec-3] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/jquery/jquery-1.9.1.min.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,362 [http-nio-9091-exec-4] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/ace/bootstrap.min.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,371 [http-nio-9091-exec-7] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/jquery/clipboard/clipboard.min.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,375 [http-nio-9091-exec-5] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/ace/ace.min.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,379 [http-nio-9091-exec-6] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/bootstrap/css/bootstrap.min.css, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,381 [http-nio-9091-exec-10] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/highlight/styles/docco.css, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,383 [http-nio-9091-exec-8] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/layer3.0.3/skin/default/layer.css, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,385 [http-nio-9091-exec-9] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/highlight/styles/style.css, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,391 [http-nio-9091-exec-3] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/cdao/swaggerbootstrapui.css, method: GET, query-params: v=1.9.3, run-time: 0
+2020-06-17 09:26:06,392 [http-nio-9091-exec-1] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/highlight/styles/default.css, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,394 [http-nio-9091-exec-6] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/layui/css/layui.css, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,397 [http-nio-9091-exec-4] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/iconfont/iconfont.css, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,403 [http-nio-9091-exec-1] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/ext/sbuadmin.css, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,404 [http-nio-9091-exec-5] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/bootstrap-tabx/css/bootstrap-tabs-x.min.css, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,408 [http-nio-9091-exec-10] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/cdao/swaggerbootstrapui-md.css, method: GET, query-params: v=1.9.3, run-time: 0
+2020-06-17 09:26:06,413 [http-nio-9091-exec-1] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/layer3.0.3/layer.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,414 [http-nio-9091-exec-6] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/highlight/highlight.pack.js, method: GET, query-params: null, run-time: 1
+2020-06-17 09:26:06,415 [http-nio-9091-exec-7] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/jquery/marked.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,422 [http-nio-9091-exec-4] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/jquery/template-web.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,455 [http-nio-9091-exec-3] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/jquery/axios.min.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,455 [http-nio-9091-exec-5] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/layui/layui.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,455 [http-nio-9091-exec-2] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/bootstrap-tabx/js/bootstrap-tabs-x.min.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,456 [http-nio-9091-exec-9] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/jquery/showdown.min.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,456 [http-nio-9091-exec-8] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/ace-editor/ace.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,457 [http-nio-9091-exec-10] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/jquery/async.min.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,469 [http-nio-9091-exec-6] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/cdao/swaggerbootstrapui.js, method: GET, query-params: v=1.9.3, run-time: 0
+2020-06-17 09:26:06,470 [http-nio-9091-exec-7] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/layer3.0.3/skin/default/layer.css, method: GET, query-params: v=3.0.3303, run-time: 0
+2020-06-17 09:26:06,470 [http-nio-9091-exec-1] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/jquery/md5.min.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,555 [http-nio-9091-exec-4] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/ext/sbuadmin.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,565 [http-nio-9091-exec-5] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/layui/lay/modules/layer.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,571 [http-nio-9091-exec-2] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/layui/css/modules/layer/default/layer.css, method: GET, query-params: v=3.1.1, run-time: 0
+2020-06-17 09:26:06,572 [http-nio-9091-exec-3] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/layui/lay/modules/element.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,583 [http-nio-9091-exec-10] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/ext/treetable.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,591 [http-nio-9091-exec-9] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/layui/lay/modules/table.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,597 [http-nio-9091-exec-8] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/layui/lay/modules/laytpl.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,603 [http-nio-9091-exec-1] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/layui/lay/modules/laypage.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,608 [http-nio-9091-exec-7] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/layui/lay/modules/form.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,613 [http-nio-9091-exec-6] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/layui/lay/modules/util.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,635 [http-nio-9091-exec-4] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/ext/treetable-lay/treetable.css, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,649 [http-nio-9091-exec-5] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/swagger-resources, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:06,807 [http-nio-9091-exec-3] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/images/api.ico, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:12,860 [http-nio-9091-exec-10] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/layer3.0.3/skin/default/loading-2.gif, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:15,274 [http-nio-9091-exec-9] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/ace-editor/mode-json.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:15,283 [http-nio-9091-exec-8] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/ace-editor/theme-eclipse.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:15,329 [http-nio-9091-exec-1] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/layui/font/iconfont.woff, method: GET, query-params: v=240, run-time: 0
+2020-06-17 09:26:15,344 [http-nio-9091-exec-7] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/ace-editor/worker-json.js, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:23,461 [http-nio-9091-exec-4] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/getAppKey, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:23,461 [http-nio-9091-exec-6] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/webjars/bycdao-ui/layer3.0.3/skin/default/loading-1.gif, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:36,508 [http-nio-9091-exec-5] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://localhost:9091/hello, method: GET, query-params: null, run-time: 0
+2020-06-17 09:26:36,509 [http-nio-9091-exec-5] [com.minbo.cloud.alibaba.controller.InitController] [INFO] (InitController.java:30)- microservice-alibaba-nacos-config
+2020-06-17 09:27:42,030 [http-nio-9091-exec-7] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://127.0.0.1:9091/error, method: GET, query-params: null, run-time: 0
+2020-06-17 09:27:42,128 [http-nio-9091-exec-6] [com.minbo.cloud.alibaba.web.CustomHttpInterceptor] [INFO] (CustomHttpInterceptor.java:44)- 请求参数, url: http://127.0.0.1:9091/error, method: GET, query-params: null, run-time: 0

+ 3 - 0
ssj_aijia/ssj-aijia-common-config/log/run.log.2020-06-16.0

@@ -0,0 +1,3 @@
+2020-06-16 17:00:01,021 [main] [com.minbo.cloud.alibaba.Application] [INFO] (SpringApplication.java:651)- The following profiles are active: dev
+2020-06-16 17:00:46,771 [main] [com.minbo.cloud.alibaba.Application] [INFO] (SpringApplication.java:651)- The following profiles are active: dev
+2020-06-16 17:04:12,584 [main] [com.minbo.cloud.alibaba.Application] [INFO] (SpringApplication.java:651)- The following profiles are active: dev

+ 50 - 0
ssj_aijia/ssj-aijia-common-config/pom.xml

@@ -0,0 +1,50 @@
+<?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>
+
+	<artifactId>microservice-alibaba-nacos-config</artifactId>
+	<packaging>jar</packaging>
+
+	<parent>
+		<groupId>com.minbo.cloud.alibaba</groupId>
+		<artifactId>spring-cloud-alibaba-study-parent</artifactId>
+		<version>0.0.1-SNAPSHOT</version>
+	</parent>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-web</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.projectlombok</groupId>
+			<artifactId>lombok</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>io.springfox</groupId>
+			<artifactId>springfox-swagger2</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>io.springfox</groupId>
+			<artifactId>springfox-swagger-ui</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>com.github.xiaoymin</groupId>
+			<artifactId>swagger-bootstrap-ui</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>net.sf.json-lib</groupId>
+			<artifactId>json-lib-ext-spring</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+		</dependency>
+	</dependencies>
+</project>

+ 24 - 0
ssj_aijia/ssj-aijia-common-config/src/main/java/com/minbo/cloud/alibaba/Application.java

@@ -0,0 +1,24 @@
+package com.minbo.cloud.alibaba;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+
+import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI;
+
+/**
+ * 程序主入口
+ * 
+ * @author Minbo
+ *
+ */
+@SpringBootApplication
+@EnableSwaggerBootstrapUI
+@EnableDiscoveryClient
+public class Application {
+
+	public static void main(String[] args) {
+		SpringApplication.run(Application.class, args);
+	}
+
+}

+ 39 - 0
ssj_aijia/ssj-aijia-common-config/src/main/java/com/minbo/cloud/alibaba/controller/InitController.java

@@ -0,0 +1,39 @@
+package com.minbo.cloud.alibaba.controller;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.minbo.cloud.alibaba.util.JsonResult;
+import com.minbo.cloud.alibaba.util.ResultCode;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * @author Minbo
+ */
+@RestController
+@Slf4j
+@Api(tags = { "init" })
+@RefreshScope
+public class InitController {
+
+	@Value("${config.appKey}")
+	private String appKey;
+
+	@ApiOperation(value = "欢迎入口", httpMethod = "GET")
+	@GetMapping("/hello")
+	public String hello() {
+		log.info("microservice-alibaba-nacos-config");
+		return "Hello, greetings from microservice-alibaba-nacos-config";
+	}
+
+	@ApiOperation(value = "获得AppKey值", httpMethod = "GET")
+	@GetMapping("/getAppKey")
+	public JsonResult getAppKey() {
+		return new JsonResult(ResultCode.SUCCESS, this.appKey);
+	}
+}

+ 60 - 0
ssj_aijia/ssj-aijia-common-config/src/main/java/com/minbo/cloud/alibaba/util/JsonResult.java

@@ -0,0 +1,60 @@
+package com.minbo.cloud.alibaba.util;
+
+import net.sf.json.JSONObject;
+
+public class JsonResult {
+	private String code;
+	private String message;
+	private Object data;
+
+	public JsonResult() {
+		this.setCode(ResultCode.SUCCESS);
+		this.setMessage(ResultCode.SUCCESS.msg());
+	}
+
+	public JsonResult(ResultCode code) {
+		this.setCode(code);
+		this.setMessage(code.msg());
+	}
+
+	public JsonResult(ResultCode code, String data) {
+		this.setCode(code);
+		this.setMessage(code.msg());
+		this.setData(data);
+	}
+
+	public JsonResult(ResultCode code, Object data) {
+		this.setCode(code);
+		this.setMessage(code.msg());
+		this.setData(data);
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(ResultCode code) {
+		this.code = code.val();
+	}
+
+	public String getMessage() {
+		return message;
+	}
+
+	public void setMessage(String message) {
+		this.message = message;
+	}
+
+	public Object getData() {
+		return data;
+	}
+
+	public void setData(Object data) {
+		this.data = data;
+	}
+
+	public String toJsonString() {
+		JSONObject json = JSONObject.fromObject(this);
+		return json.toString();
+	}
+}

+ 36 - 0
ssj_aijia/ssj-aijia-common-config/src/main/java/com/minbo/cloud/alibaba/util/ResultCode.java

@@ -0,0 +1,36 @@
+package com.minbo.cloud.alibaba.util;
+
+public enum ResultCode {
+
+	/** 成功 */
+	SUCCESS("200", "成功"),
+
+	/** 数据为空 */
+	SUCCESS_NO_DATA("201", "数据为空"),
+
+	/** 用户不存在 */
+	SUCCESS_NO_USER("202", "用户不存在"),
+
+	/** 今天的量已经跑光了 */
+	SUCCESS_ALL_GONE("203", "今天的量已经跑光了"),
+
+	/** 失败,请重试 */
+	SUCCESS_FAIL("204", "失败,请重试");
+
+	private ResultCode(String val, String msg) {
+		this.val = val;
+		this.msg = msg;
+	}
+
+	public String val() {
+		return val;
+	}
+
+	public String msg() {
+		return msg;
+	}
+
+	private String val;
+	private String msg;
+
+}

+ 50 - 0
ssj_aijia/ssj-aijia-common-config/src/main/java/com/minbo/cloud/alibaba/web/CustomHttpInterceptor.java

@@ -0,0 +1,50 @@
+package com.minbo.cloud.alibaba.web;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 拦截处理类
+ * 
+ * @author Minbo
+ */
+@Component
+@Slf4j
+@RefreshScope
+public class CustomHttpInterceptor extends HandlerInterceptorAdapter {
+
+	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
+			throws Exception {
+		long start = System.currentTimeMillis();
+		String url = request.getRequestURL().toString();
+		String method = request.getMethod();
+		String queryString = "";
+		// 去掉最后一个空格
+		Map<String, String[]> params = request.getParameterMap();
+		for (String key : params.keySet()) {
+			String[] values = params.get(key);
+			for (int i = 0; i < values.length; i++) {
+				String value = values[i];
+				queryString += key + "=" + value + "&";
+			}
+		}
+		// URL 参数
+		queryString = queryString.equals("") ? null : queryString.substring(0, queryString.length() - 1);
+
+		long end = System.currentTimeMillis();
+
+		log.info(String.format("请求参数, url: %s, method: %s, query-params: %s, run-time: %s", url, method, queryString,
+				(end - start) + ""));
+
+		return true;
+	}
+
+}

+ 60 - 0
ssj_aijia/ssj-aijia-common-config/src/main/java/com/minbo/cloud/alibaba/web/SwaggerConfig.java

@@ -0,0 +1,60 @@
+package com.minbo.cloud.alibaba.web;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.ParameterBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.schema.ModelRef;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.service.Parameter;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+@Configuration
+@EnableSwagger2
+public class SwaggerConfig {
+
+	/**
+	 * 创建一个Docket对象 调用select()方法, 生成ApiSelectorBuilder对象实例,该对象负责定义外漏的API入口
+	 * 通过使用RequestHandlerSelectors和PathSelectors来提供Predicate,在此我们使用any()方法,将所有API都通过Swagger进行文档管理
+	 * 
+	 * @return
+	 */
+	@Bean
+	public Docket createRestApi() {
+		// 定义全局header参数
+		ParameterBuilder useridPar = new ParameterBuilder();
+		List<Parameter> pars = new ArrayList<>();
+		useridPar.name("access_token").defaultValue("").description("访问身份令牌").modelRef(new ModelRef("string"))
+				.parameterType("header").required(false).build();
+		pars.add(useridPar.build());
+
+		return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
+				// 如果不想将所有的接口都通过swagger管理的话,可以将RequestHandlerSelectors.any()修改为RequestHandlerSelectors.basePackage()
+				// .apis(RequestHandlerSelectors.any())
+				.apis(RequestHandlerSelectors.basePackage("com.minbo")).paths(PathSelectors.any()).build()
+				.globalOperationParameters(pars);
+	}
+
+	@SuppressWarnings("deprecation")
+	private ApiInfo apiInfo() {
+		return new ApiInfoBuilder()
+				// 标题
+				.title("在线接口测试平台:microservice-alibaba-nacos-config服务")
+				// 简介
+				.description("rest接口层:接口服务")
+				// 服务条款
+				.termsOfServiceUrl("https://blog.csdn.net/hemin1003")
+				// 作者个人信息
+				.contact("Minbo.He")
+				// 版本
+				.version("1.0").build();
+	}
+}

+ 44 - 0
ssj_aijia/ssj-aijia-common-config/src/main/java/com/minbo/cloud/alibaba/web/WebConfig.java

@@ -0,0 +1,44 @@
+package com.minbo.cloud.alibaba.web;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
+
+/**
+ * 拦截器定义
+ * 
+ * @author Minbo.He
+ */
+@Configuration
+public class WebConfig extends WebMvcConfigurationSupport {
+
+	// 让bean提前加载,让拦截器中的@Autowired生效
+	@Bean
+	public HandlerInterceptor getInterceptor() {
+		return new CustomHttpInterceptor();
+	}
+
+	@Override
+	public void addResourceHandlers(ResourceHandlerRegistry registry) {
+		// 解决 swagger-ui.html 404报错
+		registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
+		registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
+
+		// 解决 doc.html 404 报错
+		registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
+	}
+
+	/**
+	 * 可定义多个拦截器
+	 */
+	@Override
+	public void addInterceptors(InterceptorRegistry registry) {
+		// 定义过滤拦截的url名称,拦截所有请求
+		registry.addInterceptor(this.getInterceptor()).addPathPatterns("/**");
+		super.addInterceptors(registry);
+	}
+
+}

+ 19 - 0
ssj_aijia/ssj-aijia-common-config/src/main/resources/bootstrap.yaml

@@ -0,0 +1,19 @@
+spring:
+   application:
+      name: microservice-alibaba-nacos-config
+   profiles:
+      active: dev
+   cloud:
+      nacos:
+         discovery:
+            server-addr: 127.0.0.1:8848
+            namespace: 45702247-e8d9-4cca-a7d5-7ef302b3b4ce
+         config:
+            server-addr: 127.0.0.1:8848
+            namespace: 45702247-e8d9-4cca-a7d5-7ef302b3b4ce
+            file-extension: properties
+            shared-dataids: microservice-alibaba-nacos-config.properties
+            refreshable-dataids: microservice-alibaba-nacos-config.properties
+# server
+server:
+   port: 9091

+ 42 - 0
ssj_aijia/ssj-aijia-common-config/src/main/resources/logback.xml

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+	<!-- %d日期,%t线程名,%c类的全名,%p日志级别,%file文件名,%line行数,%m%n输出的信息 -->
+	<!-- 控制台输出配置 -->
+	<appender name="STDOUT"
+		class="ch.qos.logback.core.ConsoleAppender">
+		<encoder>
+			<pattern>%d [%t] [%c] [%p] (%file:%line\)- %m%n</pattern>
+			<charset>UTF-8</charset>
+		</encoder>
+	</appender>
+	<!-- 日志文件配置 -->
+	<appender name="baselog"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<File>log/run.log</File>
+		<rollingPolicy
+			class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>log/run.log.%d.%i</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy
+				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<!-- 每一个日志文件最大size -->
+				<maxFileSize>64 MB</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<!-- 保留天数 -->
+			<maxHistory>7</maxHistory>
+			<cleanHistoryOnStart>true</cleanHistoryOnStart>
+		</rollingPolicy>
+		<encoder>
+			<pattern>
+				%d [%t] [%c] [%p] (%file:%line\)- %m%n
+			</pattern>
+			<charset>UTF-8</charset> <!-- 此处设置字符集 -->
+		</encoder>
+	</appender>
+	<root level="INFO">
+		<appender-ref ref="STDOUT" />
+	</root>
+	<!-- 定义日志输出的package包名 -->
+	<logger name="com.minbo" level="DEBUG">
+		<appender-ref ref="baselog" />
+	</logger>
+</configuration>

+ 34 - 0
ssj_aijia/ssj-aijia-common-model/README.md

@@ -0,0 +1,34 @@
+# microservice-alibaba-nacos-discovery
+
+【项目中快速集成配置中心Nacos-服务注册发现功能】技术点
+
+功能介绍
+
+1. 项目中快速集成配置中心Nacos-服务注册发现功能
+
+## 本项目教程
+
+[项目中快速集成配置中心Nacos-服务注册发现功能](https://hemin.blog.csdn.net/article/details/105517927)
+
+## 该系列教程
+
+[SpringCloud Alibaba从入门到精通教程](https://blog.csdn.net/hemin1003/article/details/82043611)
+
+## 个人说明
+
+期望和大家”一起学习,一起成长“,共勉,O(∩_∩)O谢谢
+
+不讲虚的,只做实干家
+
+Talk is cheap,show me the code
+
+<br/>
+
+
+## [关于我](http://heminit.com/about/)
+
+欢迎交流问题,可加我的个人QQ 469580884,或Q群号 751925591,一起探讨交流问题
+
+[我的博客地址](http://blog.csdn.net/hemin1003)
+
+[个人域名](http://heminit.com)

+ 53 - 0
ssj_aijia/ssj-aijia-common-model/pom.xml

@@ -0,0 +1,53 @@
+<?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>
+
+	<artifactId>microservice-alibaba-nacos-discovery</artifactId>
+	<packaging>jar</packaging>
+
+	<parent>
+		<groupId>com.minbo.cloud.alibaba</groupId>
+		<artifactId>spring-cloud-alibaba-study-parent</artifactId>
+		<version>0.0.1-SNAPSHOT</version>
+	</parent>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-web</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.projectlombok</groupId>
+			<artifactId>lombok</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>io.springfox</groupId>
+			<artifactId>springfox-swagger2</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>io.springfox</groupId>
+			<artifactId>springfox-swagger-ui</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>com.github.xiaoymin</groupId>
+			<artifactId>swagger-bootstrap-ui</artifactId>
+		</dependency>
+		<!-- 服务注册发现功能 -->
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+		</dependency>
+	</dependencies>
+
+	<build>
+		<finalName>microservice-alibaba-nacos-discovery</finalName>
+		<plugins>
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
+</project>

+ 24 - 0
ssj_aijia/ssj-aijia-common-model/src/main/java/com/minbo/cloud/alibaba/Application.java

@@ -0,0 +1,24 @@
+package com.minbo.cloud.alibaba;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+
+import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI;
+
+/**
+ * 程序主入口
+ * 
+ * @author Minbo
+ *
+ */
+@SpringBootApplication
+@EnableSwaggerBootstrapUI
+@EnableDiscoveryClient
+public class Application {
+
+	public static void main(String[] args) {
+		SpringApplication.run(Application.class, args);
+	}
+
+}

+ 30 - 0
ssj_aijia/ssj-aijia-common-model/src/main/java/com/minbo/cloud/alibaba/controller/InitController.java

@@ -0,0 +1,30 @@
+package com.minbo.cloud.alibaba.controller;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * @author Minbo
+ */
+@RestController
+@Slf4j
+@Api(tags = { "init" })
+public class InitController {
+
+	/**
+	 * http://localhost:9090/hello
+	 * 
+	 * @return
+	 */
+	@ApiOperation(value = "欢迎入口", httpMethod = "GET")
+	@GetMapping("/hello")
+	public String hello() {
+		log.info("microservice-alibaba-nacos-discovery");
+		return "Hello, greetings from microservice-alibaba-nacos-discovery";
+	}
+
+}

+ 50 - 0
ssj_aijia/ssj-aijia-common-model/src/main/java/com/minbo/cloud/alibaba/web/CustomHttpInterceptor.java

@@ -0,0 +1,50 @@
+package com.minbo.cloud.alibaba.web;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 拦截处理类
+ * 
+ * @author Minbo
+ */
+@Component
+@Slf4j
+@RefreshScope
+public class CustomHttpInterceptor extends HandlerInterceptorAdapter {
+
+	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
+			throws Exception {
+		long start = System.currentTimeMillis();
+		String url = request.getRequestURL().toString();
+		String method = request.getMethod();
+		String queryString = "";
+		// 去掉最后一个空格
+		Map<String, String[]> params = request.getParameterMap();
+		for (String key : params.keySet()) {
+			String[] values = params.get(key);
+			for (int i = 0; i < values.length; i++) {
+				String value = values[i];
+				queryString += key + "=" + value + "&";
+			}
+		}
+		// URL 参数
+		queryString = queryString.equals("") ? null : queryString.substring(0, queryString.length() - 1);
+
+		long end = System.currentTimeMillis();
+
+		log.info(String.format("请求参数, url: %s, method: %s, query-params: %s, run-time: %s", url, method, queryString,
+				(end - start) + ""));
+
+		return true;
+	}
+
+}

+ 60 - 0
ssj_aijia/ssj-aijia-common-model/src/main/java/com/minbo/cloud/alibaba/web/SwaggerConfig.java

@@ -0,0 +1,60 @@
+package com.minbo.cloud.alibaba.web;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.ParameterBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.schema.ModelRef;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.service.Parameter;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+@Configuration
+@EnableSwagger2
+public class SwaggerConfig {
+
+	/**
+	 * 创建一个Docket对象 调用select()方法, 生成ApiSelectorBuilder对象实例,该对象负责定义外漏的API入口
+	 * 通过使用RequestHandlerSelectors和PathSelectors来提供Predicate,在此我们使用any()方法,将所有API都通过Swagger进行文档管理
+	 * 
+	 * @return
+	 */
+	@Bean
+	public Docket createRestApi() {
+		// 定义全局header参数
+		ParameterBuilder useridPar = new ParameterBuilder();
+		List<Parameter> pars = new ArrayList<>();
+		useridPar.name("access_token").defaultValue("").description("访问身份令牌").modelRef(new ModelRef("string"))
+				.parameterType("header").required(false).build();
+		pars.add(useridPar.build());
+
+		return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
+				// 如果不想将所有的接口都通过swagger管理的话,可以将RequestHandlerSelectors.any()修改为RequestHandlerSelectors.basePackage()
+				// .apis(RequestHandlerSelectors.any())
+				.apis(RequestHandlerSelectors.basePackage("com.minbo")).paths(PathSelectors.any()).build()
+				.globalOperationParameters(pars);
+	}
+
+	@SuppressWarnings("deprecation")
+	private ApiInfo apiInfo() {
+		return new ApiInfoBuilder()
+				// 标题
+				.title("在线接口测试平台:microservice-alibaba-nacos-discovery服务")
+				// 简介
+				.description("rest接口层:接口服务")
+				// 服务条款
+				.termsOfServiceUrl("https://blog.csdn.net/hemin1003")
+				// 作者个人信息
+				.contact("Minbo.He")
+				// 版本
+				.version("1.0").build();
+	}
+}

+ 44 - 0
ssj_aijia/ssj-aijia-common-model/src/main/java/com/minbo/cloud/alibaba/web/WebConfig.java

@@ -0,0 +1,44 @@
+package com.minbo.cloud.alibaba.web;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
+
+/**
+ * 拦截器定义
+ * 
+ * @author Minbo.He
+ */
+@Configuration
+public class WebConfig extends WebMvcConfigurationSupport {
+
+	// 让bean提前加载,让拦截器中的@Autowired生效
+	@Bean
+	public HandlerInterceptor getInterceptor() {
+		return new CustomHttpInterceptor();
+	}
+
+	@Override
+	public void addResourceHandlers(ResourceHandlerRegistry registry) {
+		// 解决 swagger-ui.html 404报错
+		registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
+		registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
+
+		// 解决 doc.html 404 报错
+		registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
+	}
+
+	/**
+	 * 可定义多个拦截器
+	 */
+	@Override
+	public void addInterceptors(InterceptorRegistry registry) {
+		// 定义过滤拦截的url名称,拦截所有请求
+		registry.addInterceptor(this.getInterceptor()).addPathPatterns("/**");
+		super.addInterceptors(registry);
+	}
+
+}

+ 13 - 0
ssj_aijia/ssj-aijia-common-model/src/main/resources/bootstrap.yaml

@@ -0,0 +1,13 @@
+spring:
+   application:
+      name: microservice-alibaba-nacos-discovery
+   profiles:
+      active: dev
+   cloud:
+      nacos:
+         discovery:
+            server-addr: 127.0.0.1:8848
+            namespace: 2bc5565f-453f-4b1c-bde4-eafe23bdb2f0
+# server
+server:
+   port: 9090

+ 42 - 0
ssj_aijia/ssj-aijia-common-model/src/main/resources/logback.xml

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+	<!-- %d日期,%t线程名,%c类的全名,%p日志级别,%file文件名,%line行数,%m%n输出的信息 -->
+	<!-- 控制台输出配置 -->
+	<appender name="STDOUT"
+		class="ch.qos.logback.core.ConsoleAppender">
+		<encoder>
+			<pattern>%d [%t] [%c] [%p] (%file:%line\)- %m%n</pattern>
+			<charset>UTF-8</charset>
+		</encoder>
+	</appender>
+	<!-- 日志文件配置 -->
+	<appender name="baselog"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<File>log/run.log</File>
+		<rollingPolicy
+			class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>log/run.log.%d.%i</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy
+				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<!-- 每一个日志文件最大size -->
+				<maxFileSize>64 MB</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<!-- 保留天数 -->
+			<maxHistory>7</maxHistory>
+			<cleanHistoryOnStart>true</cleanHistoryOnStart>
+		</rollingPolicy>
+		<encoder>
+			<pattern>
+				%d [%t] [%c] [%p] (%file:%line\)- %m%n
+			</pattern>
+			<charset>UTF-8</charset> <!-- 此处设置字符集 -->
+		</encoder>
+	</appender>
+	<root level="INFO">
+		<appender-ref ref="STDOUT" />
+	</root>
+	<!-- 定义日志输出的package包名 -->
+	<logger name="com.minbo" level="DEBUG">
+		<appender-ref ref="baselog" />
+	</logger>
+</configuration>

+ 34 - 0
ssj_aijia/ssj-aijia-common-utils/README.md

@@ -0,0 +1,34 @@
+# microservice-alibaba-nacos-discovery
+
+【项目中快速集成配置中心Nacos-服务注册发现功能】技术点
+
+功能介绍
+
+1. 项目中快速集成配置中心Nacos-服务注册发现功能
+
+## 本项目教程
+
+[项目中快速集成配置中心Nacos-服务注册发现功能](https://hemin.blog.csdn.net/article/details/105517927)
+
+## 该系列教程
+
+[SpringCloud Alibaba从入门到精通教程](https://blog.csdn.net/hemin1003/article/details/82043611)
+
+## 个人说明
+
+期望和大家”一起学习,一起成长“,共勉,O(∩_∩)O谢谢
+
+不讲虚的,只做实干家
+
+Talk is cheap,show me the code
+
+<br/>
+
+
+## [关于我](http://heminit.com/about/)
+
+欢迎交流问题,可加我的个人QQ 469580884,或Q群号 751925591,一起探讨交流问题
+
+[我的博客地址](http://blog.csdn.net/hemin1003)
+
+[个人域名](http://heminit.com)

+ 53 - 0
ssj_aijia/ssj-aijia-common-utils/pom.xml

@@ -0,0 +1,53 @@
+<?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>
+
+	<artifactId>microservice-alibaba-nacos-discovery</artifactId>
+	<packaging>jar</packaging>
+
+	<parent>
+		<groupId>com.minbo.cloud.alibaba</groupId>
+		<artifactId>spring-cloud-alibaba-study-parent</artifactId>
+		<version>0.0.1-SNAPSHOT</version>
+	</parent>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-web</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.projectlombok</groupId>
+			<artifactId>lombok</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>io.springfox</groupId>
+			<artifactId>springfox-swagger2</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>io.springfox</groupId>
+			<artifactId>springfox-swagger-ui</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>com.github.xiaoymin</groupId>
+			<artifactId>swagger-bootstrap-ui</artifactId>
+		</dependency>
+		<!-- 服务注册发现功能 -->
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+		</dependency>
+	</dependencies>
+
+	<build>
+		<finalName>microservice-alibaba-nacos-discovery</finalName>
+		<plugins>
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
+</project>

+ 24 - 0
ssj_aijia/ssj-aijia-common-utils/src/main/java/com/minbo/cloud/alibaba/Application.java

@@ -0,0 +1,24 @@
+package com.minbo.cloud.alibaba;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+
+import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI;
+
+/**
+ * 程序主入口
+ * 
+ * @author Minbo
+ *
+ */
+@SpringBootApplication
+@EnableSwaggerBootstrapUI
+@EnableDiscoveryClient
+public class Application {
+
+	public static void main(String[] args) {
+		SpringApplication.run(Application.class, args);
+	}
+
+}

+ 30 - 0
ssj_aijia/ssj-aijia-common-utils/src/main/java/com/minbo/cloud/alibaba/controller/InitController.java

@@ -0,0 +1,30 @@
+package com.minbo.cloud.alibaba.controller;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * @author Minbo
+ */
+@RestController
+@Slf4j
+@Api(tags = { "init" })
+public class InitController {
+
+	/**
+	 * http://localhost:9090/hello
+	 * 
+	 * @return
+	 */
+	@ApiOperation(value = "欢迎入口", httpMethod = "GET")
+	@GetMapping("/hello")
+	public String hello() {
+		log.info("microservice-alibaba-nacos-discovery");
+		return "Hello, greetings from microservice-alibaba-nacos-discovery";
+	}
+
+}

+ 50 - 0
ssj_aijia/ssj-aijia-common-utils/src/main/java/com/minbo/cloud/alibaba/web/CustomHttpInterceptor.java

@@ -0,0 +1,50 @@
+package com.minbo.cloud.alibaba.web;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 拦截处理类
+ * 
+ * @author Minbo
+ */
+@Component
+@Slf4j
+@RefreshScope
+public class CustomHttpInterceptor extends HandlerInterceptorAdapter {
+
+	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
+			throws Exception {
+		long start = System.currentTimeMillis();
+		String url = request.getRequestURL().toString();
+		String method = request.getMethod();
+		String queryString = "";
+		// 去掉最后一个空格
+		Map<String, String[]> params = request.getParameterMap();
+		for (String key : params.keySet()) {
+			String[] values = params.get(key);
+			for (int i = 0; i < values.length; i++) {
+				String value = values[i];
+				queryString += key + "=" + value + "&";
+			}
+		}
+		// URL 参数
+		queryString = queryString.equals("") ? null : queryString.substring(0, queryString.length() - 1);
+
+		long end = System.currentTimeMillis();
+
+		log.info(String.format("请求参数, url: %s, method: %s, query-params: %s, run-time: %s", url, method, queryString,
+				(end - start) + ""));
+
+		return true;
+	}
+
+}

+ 60 - 0
ssj_aijia/ssj-aijia-common-utils/src/main/java/com/minbo/cloud/alibaba/web/SwaggerConfig.java

@@ -0,0 +1,60 @@
+package com.minbo.cloud.alibaba.web;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.ParameterBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.schema.ModelRef;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.service.Parameter;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+@Configuration
+@EnableSwagger2
+public class SwaggerConfig {
+
+	/**
+	 * 创建一个Docket对象 调用select()方法, 生成ApiSelectorBuilder对象实例,该对象负责定义外漏的API入口
+	 * 通过使用RequestHandlerSelectors和PathSelectors来提供Predicate,在此我们使用any()方法,将所有API都通过Swagger进行文档管理
+	 * 
+	 * @return
+	 */
+	@Bean
+	public Docket createRestApi() {
+		// 定义全局header参数
+		ParameterBuilder useridPar = new ParameterBuilder();
+		List<Parameter> pars = new ArrayList<>();
+		useridPar.name("access_token").defaultValue("").description("访问身份令牌").modelRef(new ModelRef("string"))
+				.parameterType("header").required(false).build();
+		pars.add(useridPar.build());
+
+		return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
+				// 如果不想将所有的接口都通过swagger管理的话,可以将RequestHandlerSelectors.any()修改为RequestHandlerSelectors.basePackage()
+				// .apis(RequestHandlerSelectors.any())
+				.apis(RequestHandlerSelectors.basePackage("com.minbo")).paths(PathSelectors.any()).build()
+				.globalOperationParameters(pars);
+	}
+
+	@SuppressWarnings("deprecation")
+	private ApiInfo apiInfo() {
+		return new ApiInfoBuilder()
+				// 标题
+				.title("在线接口测试平台:microservice-alibaba-nacos-discovery服务")
+				// 简介
+				.description("rest接口层:接口服务")
+				// 服务条款
+				.termsOfServiceUrl("https://blog.csdn.net/hemin1003")
+				// 作者个人信息
+				.contact("Minbo.He")
+				// 版本
+				.version("1.0").build();
+	}
+}

+ 44 - 0
ssj_aijia/ssj-aijia-common-utils/src/main/java/com/minbo/cloud/alibaba/web/WebConfig.java

@@ -0,0 +1,44 @@
+package com.minbo.cloud.alibaba.web;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
+
+/**
+ * 拦截器定义
+ * 
+ * @author Minbo.He
+ */
+@Configuration
+public class WebConfig extends WebMvcConfigurationSupport {
+
+	// 让bean提前加载,让拦截器中的@Autowired生效
+	@Bean
+	public HandlerInterceptor getInterceptor() {
+		return new CustomHttpInterceptor();
+	}
+
+	@Override
+	public void addResourceHandlers(ResourceHandlerRegistry registry) {
+		// 解决 swagger-ui.html 404报错
+		registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
+		registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
+
+		// 解决 doc.html 404 报错
+		registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
+	}
+
+	/**
+	 * 可定义多个拦截器
+	 */
+	@Override
+	public void addInterceptors(InterceptorRegistry registry) {
+		// 定义过滤拦截的url名称,拦截所有请求
+		registry.addInterceptor(this.getInterceptor()).addPathPatterns("/**");
+		super.addInterceptors(registry);
+	}
+
+}

+ 13 - 0
ssj_aijia/ssj-aijia-common-utils/src/main/resources/bootstrap.yaml

@@ -0,0 +1,13 @@
+spring:
+   application:
+      name: microservice-alibaba-nacos-discovery
+   profiles:
+      active: dev
+   cloud:
+      nacos:
+         discovery:
+            server-addr: 127.0.0.1:8848
+            namespace: 2bc5565f-453f-4b1c-bde4-eafe23bdb2f0
+# server
+server:
+   port: 9090

+ 42 - 0
ssj_aijia/ssj-aijia-common-utils/src/main/resources/logback.xml

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+	<!-- %d日期,%t线程名,%c类的全名,%p日志级别,%file文件名,%line行数,%m%n输出的信息 -->
+	<!-- 控制台输出配置 -->
+	<appender name="STDOUT"
+		class="ch.qos.logback.core.ConsoleAppender">
+		<encoder>
+			<pattern>%d [%t] [%c] [%p] (%file:%line\)- %m%n</pattern>
+			<charset>UTF-8</charset>
+		</encoder>
+	</appender>
+	<!-- 日志文件配置 -->
+	<appender name="baselog"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<File>log/run.log</File>
+		<rollingPolicy
+			class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>log/run.log.%d.%i</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy
+				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<!-- 每一个日志文件最大size -->
+				<maxFileSize>64 MB</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<!-- 保留天数 -->
+			<maxHistory>7</maxHistory>
+			<cleanHistoryOnStart>true</cleanHistoryOnStart>
+		</rollingPolicy>
+		<encoder>
+			<pattern>
+				%d [%t] [%c] [%p] (%file:%line\)- %m%n
+			</pattern>
+			<charset>UTF-8</charset> <!-- 此处设置字符集 -->
+		</encoder>
+	</appender>
+	<root level="INFO">
+		<appender-ref ref="STDOUT" />
+	</root>
+	<!-- 定义日志输出的package包名 -->
+	<logger name="com.minbo" level="DEBUG">
+		<appender-ref ref="baselog" />
+	</logger>
+</configuration>

+ 34 - 0
ssj_aijia/ssj-aijia-sys/README.md

@@ -0,0 +1,34 @@
+# microservice-alibaba-nacos-discovery
+
+【项目中快速集成配置中心Nacos-服务注册发现功能】技术点
+
+功能介绍
+
+1. 项目中快速集成配置中心Nacos-服务注册发现功能
+
+## 本项目教程
+
+[项目中快速集成配置中心Nacos-服务注册发现功能](https://hemin.blog.csdn.net/article/details/105517927)
+
+## 该系列教程
+
+[SpringCloud Alibaba从入门到精通教程](https://blog.csdn.net/hemin1003/article/details/82043611)
+
+## 个人说明
+
+期望和大家”一起学习,一起成长“,共勉,O(∩_∩)O谢谢
+
+不讲虚的,只做实干家
+
+Talk is cheap,show me the code
+
+<br/>
+
+
+## [关于我](http://heminit.com/about/)
+
+欢迎交流问题,可加我的个人QQ 469580884,或Q群号 751925591,一起探讨交流问题
+
+[我的博客地址](http://blog.csdn.net/hemin1003)
+
+[个人域名](http://heminit.com)

+ 53 - 0
ssj_aijia/ssj-aijia-sys/pom.xml

@@ -0,0 +1,53 @@
+<?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>
+
+	<artifactId>microservice-alibaba-nacos-discovery</artifactId>
+	<packaging>jar</packaging>
+
+	<parent>
+		<groupId>com.minbo.cloud.alibaba</groupId>
+		<artifactId>spring-cloud-alibaba-study-parent</artifactId>
+		<version>0.0.1-SNAPSHOT</version>
+	</parent>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-web</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.projectlombok</groupId>
+			<artifactId>lombok</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>io.springfox</groupId>
+			<artifactId>springfox-swagger2</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>io.springfox</groupId>
+			<artifactId>springfox-swagger-ui</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>com.github.xiaoymin</groupId>
+			<artifactId>swagger-bootstrap-ui</artifactId>
+		</dependency>
+		<!-- 服务注册发现功能 -->
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+		</dependency>
+	</dependencies>
+
+	<build>
+		<finalName>microservice-alibaba-nacos-discovery</finalName>
+		<plugins>
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
+</project>

+ 24 - 0
ssj_aijia/ssj-aijia-sys/src/main/java/com/minbo/cloud/alibaba/Application.java

@@ -0,0 +1,24 @@
+package com.minbo.cloud.alibaba;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+
+import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI;
+
+/**
+ * 程序主入口
+ * 
+ * @author Minbo
+ *
+ */
+@SpringBootApplication
+@EnableSwaggerBootstrapUI
+@EnableDiscoveryClient
+public class Application {
+
+	public static void main(String[] args) {
+		SpringApplication.run(Application.class, args);
+	}
+
+}

+ 30 - 0
ssj_aijia/ssj-aijia-sys/src/main/java/com/minbo/cloud/alibaba/controller/InitController.java

@@ -0,0 +1,30 @@
+package com.minbo.cloud.alibaba.controller;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * @author Minbo
+ */
+@RestController
+@Slf4j
+@Api(tags = { "init" })
+public class InitController {
+
+	/**
+	 * http://localhost:9090/hello
+	 * 
+	 * @return
+	 */
+	@ApiOperation(value = "欢迎入口", httpMethod = "GET")
+	@GetMapping("/hello")
+	public String hello() {
+		log.info("microservice-alibaba-nacos-discovery");
+		return "Hello, greetings from microservice-alibaba-nacos-discovery";
+	}
+
+}

+ 50 - 0
ssj_aijia/ssj-aijia-sys/src/main/java/com/minbo/cloud/alibaba/web/CustomHttpInterceptor.java

@@ -0,0 +1,50 @@
+package com.minbo.cloud.alibaba.web;
+
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * 拦截处理类
+ * 
+ * @author Minbo
+ */
+@Component
+@Slf4j
+@RefreshScope
+public class CustomHttpInterceptor extends HandlerInterceptorAdapter {
+
+	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
+			throws Exception {
+		long start = System.currentTimeMillis();
+		String url = request.getRequestURL().toString();
+		String method = request.getMethod();
+		String queryString = "";
+		// 去掉最后一个空格
+		Map<String, String[]> params = request.getParameterMap();
+		for (String key : params.keySet()) {
+			String[] values = params.get(key);
+			for (int i = 0; i < values.length; i++) {
+				String value = values[i];
+				queryString += key + "=" + value + "&";
+			}
+		}
+		// URL 参数
+		queryString = queryString.equals("") ? null : queryString.substring(0, queryString.length() - 1);
+
+		long end = System.currentTimeMillis();
+
+		log.info(String.format("请求参数, url: %s, method: %s, query-params: %s, run-time: %s", url, method, queryString,
+				(end - start) + ""));
+
+		return true;
+	}
+
+}

+ 60 - 0
ssj_aijia/ssj-aijia-sys/src/main/java/com/minbo/cloud/alibaba/web/SwaggerConfig.java

@@ -0,0 +1,60 @@
+package com.minbo.cloud.alibaba.web;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.ParameterBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.schema.ModelRef;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.service.Parameter;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+@Configuration
+@EnableSwagger2
+public class SwaggerConfig {
+
+	/**
+	 * 创建一个Docket对象 调用select()方法, 生成ApiSelectorBuilder对象实例,该对象负责定义外漏的API入口
+	 * 通过使用RequestHandlerSelectors和PathSelectors来提供Predicate,在此我们使用any()方法,将所有API都通过Swagger进行文档管理
+	 * 
+	 * @return
+	 */
+	@Bean
+	public Docket createRestApi() {
+		// 定义全局header参数
+		ParameterBuilder useridPar = new ParameterBuilder();
+		List<Parameter> pars = new ArrayList<>();
+		useridPar.name("access_token").defaultValue("").description("访问身份令牌").modelRef(new ModelRef("string"))
+				.parameterType("header").required(false).build();
+		pars.add(useridPar.build());
+
+		return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
+				// 如果不想将所有的接口都通过swagger管理的话,可以将RequestHandlerSelectors.any()修改为RequestHandlerSelectors.basePackage()
+				// .apis(RequestHandlerSelectors.any())
+				.apis(RequestHandlerSelectors.basePackage("com.minbo")).paths(PathSelectors.any()).build()
+				.globalOperationParameters(pars);
+	}
+
+	@SuppressWarnings("deprecation")
+	private ApiInfo apiInfo() {
+		return new ApiInfoBuilder()
+				// 标题
+				.title("在线接口测试平台:microservice-alibaba-nacos-discovery服务")
+				// 简介
+				.description("rest接口层:接口服务")
+				// 服务条款
+				.termsOfServiceUrl("https://blog.csdn.net/hemin1003")
+				// 作者个人信息
+				.contact("Minbo.He")
+				// 版本
+				.version("1.0").build();
+	}
+}

+ 44 - 0
ssj_aijia/ssj-aijia-sys/src/main/java/com/minbo/cloud/alibaba/web/WebConfig.java

@@ -0,0 +1,44 @@
+package com.minbo.cloud.alibaba.web;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
+
+/**
+ * 拦截器定义
+ * 
+ * @author Minbo.He
+ */
+@Configuration
+public class WebConfig extends WebMvcConfigurationSupport {
+
+	// 让bean提前加载,让拦截器中的@Autowired生效
+	@Bean
+	public HandlerInterceptor getInterceptor() {
+		return new CustomHttpInterceptor();
+	}
+
+	@Override
+	public void addResourceHandlers(ResourceHandlerRegistry registry) {
+		// 解决 swagger-ui.html 404报错
+		registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
+		registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
+
+		// 解决 doc.html 404 报错
+		registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
+	}
+
+	/**
+	 * 可定义多个拦截器
+	 */
+	@Override
+	public void addInterceptors(InterceptorRegistry registry) {
+		// 定义过滤拦截的url名称,拦截所有请求
+		registry.addInterceptor(this.getInterceptor()).addPathPatterns("/**");
+		super.addInterceptors(registry);
+	}
+
+}

+ 13 - 0
ssj_aijia/ssj-aijia-sys/src/main/resources/bootstrap.yaml

@@ -0,0 +1,13 @@
+spring:
+   application:
+      name: microservice-alibaba-nacos-discovery
+   profiles:
+      active: dev
+   cloud:
+      nacos:
+         discovery:
+            server-addr: 127.0.0.1:8848
+            namespace: 2bc5565f-453f-4b1c-bde4-eafe23bdb2f0
+# server
+server:
+   port: 9090

+ 42 - 0
ssj_aijia/ssj-aijia-sys/src/main/resources/logback.xml

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+	<!-- %d日期,%t线程名,%c类的全名,%p日志级别,%file文件名,%line行数,%m%n输出的信息 -->
+	<!-- 控制台输出配置 -->
+	<appender name="STDOUT"
+		class="ch.qos.logback.core.ConsoleAppender">
+		<encoder>
+			<pattern>%d [%t] [%c] [%p] (%file:%line\)- %m%n</pattern>
+			<charset>UTF-8</charset>
+		</encoder>
+	</appender>
+	<!-- 日志文件配置 -->
+	<appender name="baselog"
+		class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<File>log/run.log</File>
+		<rollingPolicy
+			class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+			<fileNamePattern>log/run.log.%d.%i</fileNamePattern>
+			<timeBasedFileNamingAndTriggeringPolicy
+				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+				<!-- 每一个日志文件最大size -->
+				<maxFileSize>64 MB</maxFileSize>
+			</timeBasedFileNamingAndTriggeringPolicy>
+			<!-- 保留天数 -->
+			<maxHistory>7</maxHistory>
+			<cleanHistoryOnStart>true</cleanHistoryOnStart>
+		</rollingPolicy>
+		<encoder>
+			<pattern>
+				%d [%t] [%c] [%p] (%file:%line\)- %m%n
+			</pattern>
+			<charset>UTF-8</charset> <!-- 此处设置字符集 -->
+		</encoder>
+	</appender>
+	<root level="INFO">
+		<appender-ref ref="STDOUT" />
+	</root>
+	<!-- 定义日志输出的package包名 -->
+	<logger name="com.minbo" level="DEBUG">
+		<appender-ref ref="baselog" />
+	</logger>
+</configuration>