spring-boot-quick

Introduction: :herb: 基于 springboot 的快速学习示例,整合自己遇到的开源框架,如:rabbitmq(延迟队列)、Kafka、jpa、redies、oauth2、swagger、jsp、docker、k3s、k3d、k8s、mybatis 加解密插件、异常处理、日志输出、多模块开发、多环境打包、缓存 cache、爬虫、jwt、GraphQL、dubbo、zookeeper 和 Async 等等:pushpin:
More: Author   ReportBugs   OfficialWebsite   
Tags:

兄弟们,转 go 了,现在工作完全用 go 了,这个仓库就不再维护啦~~~


欢迎大家留言和 PR~

Tip: 技术更新换代太快,本仓库仅做参考,自己的项目具体使用哪个版本还需谨慎思考~(不推荐使用最新的版本,推荐使用(最新 -1|2)的版本,会比较稳定)

spring-boot-quick

LICENSE 知识共享协议(CC 协议) Build Status Average time to resolve an issue Percentage of issues still open GitHub stars GitHub forks

前言

  自己很早就想搞一个总的仓库就是将自己平时遇到的和学习到的东西整合在一起,方便后面用的时候快速的查找与使用,之前是通过 branch 的方式去整理,感觉不直观,一咬牙就花了点时间将所有的分支整合在一起(之前使用 branch 方式的兄 dei,这里对不住了,你们可以将之前的干掉,重新克隆总的),方便自己也方便大家参考,以下是我的相关博客,有兴趣的 可以去浏览浏览,觉得对自己有点启发或者解决了一些问题,可以点个赞~

.
├── README.md
├── pom.xml
├── quick-activemq
├── quick-activemq2
├── quick-async
├── quick-batch
├── quick-cache
├── quick-config-encrypt
├── quick-docker
├── quick-dubbo
├── quick-dynamic-bean
├── quick-exception
├── quick-feign
├── quick-hbase
├── quick-img2txt
├── quick-jdbc
├── quick-jpa
├── quick-jsp
├── quick-jwt
├── quick-kafka
├── quick-log
├── quick-logback
├── quick-lombok
├── quick-modules
├── quick-monitor-thread
├── quick-multi-data
├── quick-multi-rabbitmq
├── quick-mybatis-druid
├── quick-oauth2
├── quick-okhttp
├── quick-oss
├── quick-package-assembly
├── quick-package-assembly-multi-env
├── quick-rabbitmq
├── quick-redies
├── quick-rest-template
├── quick-rocketmq
├── quick-starter
├── quick-starter-demo
├── quick-swagger
├── quick-vue
├── quick-vw-crawler
└── quick-wx-public

spring-boot-quick

基于 springboot 的快速学习示例

所有分支介绍

quick-idea

  • 自己用 idea 的配置
  • ignore 的模板

quick-crawler 平时的爬虫

  • 领英爬虫
  • 百度搜索领英种子 url 爬虫和"随机应变"的处理方式 (没想到现在对领英爬虫的需求这么大,最近给一个客户开了自动抓取领英数据的系统,处于安全,就把代码删掉了)
  • 一键导出 CSDN 某用户的所有博客内容并转换为 MD 格式到本地

已经将爬虫模块迁移到crawlers

quick-swagger

  • web 接口的规范化示例
  • 添加了当传递参数为对象时,如何使用 swagger 注解

    注意:如果接受参数是已@RequestBody 方式并且参数中包含日期类型的参数,可在对应模型的日期属性上面添加@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")注解

     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",locale = "zh" , timezone="GMT+8") // 注意时区的设置
     private Date birthday; // 出生日期
    

swagger 升级到 2.7 版本,添加了使用 swagger 验证功能,注意这里不是 auth2 鉴权

quick-thread

java 线程池 Executor 的示例 点我

quick-modules

springboot 模块化开发示例

quick-mybatis-druid

springboot 整合 mybatis 和阿里云的 druid 监控功能,日志可以控制 sql 的输出 添加 springboot 的 health 监控,链接如下

HTTP 方法 路径 描述 鉴权
GET /autoconfig 查看自动配置的使用情况,该报告展示所有 auto-configuration 候选者及它们被应用或未被应用的原因 true
GET /configprops 显示一个所有@ConfigurationProperties 的整理列表 true
GET /beans 显示一个应用中所有 Spring Beans 的完整列表 true
GET /dump 打印线程栈 true
GET /env 查看所有环境变量 true
GET /env/{name} 查看具体变量值 true
GET /health 查看应用健康指标 false
GET /info 查看应用信息 false
GET /mappings 查看所有 url 映射 true
GET /metrics 查看应用基本指标 true
GET /metrics/{name} 查看具体指标 true
POST /shutdown 允许应用以优雅的方式关闭(默认情况下不启用) true
GET /trace 查看基本追踪信息 true

quick-multi-data

  • springboot mybatis 多数据源配置,别忘了为多数据源的连接池配置
  • 改为 druid 多数据源,方便监控数据库查询和性能

quick-spark

springboot 整合 spark 示例 已抽离 点我

quick-package-assembly

  • maven 打包示例包含 jar 的启动与停止脚本(简单粗暴,慎重考虑再使用)
  • 使用 assembly 打包 mybatis 产生的 xml 时,可将对应 mapperxml 文件放在 resources 文件,然后再 application.properties 里配置对应路径,如 mybatis.mapperLocations=classpath:mapper/*.xml 这里需要注意一下

quick-package-assembly-multi-env

程序 依赖包 分开化的多环境部署

quick-tika

apache 的文本抽取开源框架,整合到 springboot 中

quick-ElasticSearch

关于 es 搜索的相关内容 现在在学习 Elasticsearch+Logstash+Kibana 后续会有相关博文、和代码示例~

注意:想要用好 es,搜索是关键 移步这里

quick-img2txt 图片与文字转换的程序示例

  • 文字转换成图片
  • 图片转换为 txt,可作为一些程序启动的注释,如佛祖注释,spring 启动注释,等等,可以根据你输入的图片制作(背景一定要为白色),如

前方预警!!!!

转换前 转换后

  • 验证码识别 使用 easyocr(项目地址)提供的 api 接口,可以识别验证码,这简直是小虫子的福利,就问你怕不怕!(现在收费了。。。)

quick-batch

spring 下的批量处理大数据模块,这里是从 mysql 里读取然后再写入 mysql 中,可以借鉴下,来源https://github.com/geekyjaat/spring-batch

quick-rabbit

rabbit 模块 做了个接口服务

ui

应网友@Android-BRUCE 的要求,添加了延迟队列的处理方式,包括针对消息和针对队列的处理方式

WX20180613-233153@2x.png

一定要把图看懂。。。 友情提示:如果在刚开始 queue 与 exchange 绑定错了强烈建议从 Rabbit 管理页面上删除对应的配置再测试!!!

quick-exception

springboot 下统一处理异常方法,即,在请求没到达对应 controller 报错之后的处理方法,比如 404,400 和 500 错误,此处返回的是 json 字符串,页面的暂时没有

quick-log

  • 使用 log4j2 作为日志体系。主要实现的功能
  • 控制台输出的是 error 日志,但是日志文件里存的是 info 和 error 日志,并且按年月日生成对应日志文件
  • 控制台颜色输出插件:Grep console
  • 使用 AOP 输出每个请求的详细日志

quick-wx-api

自己开发的小程序(哇哦窝)使用到的 api,非常简单,里面集成了阿里封装的 httpclient 工具包,挺好用的。

quick-jsp

前段时间一直没有搞定在 springboot 中使用 jsp,今天抽了点时间搞定了,有几点需要注意的地方

  • 创建项目的时候这样选择"spring initializr-->web",ok 之后的项目的 resource 下会有 tamplates 包,可以删掉
  • 创建 webapp/WEB-INF 目录(具体根据自己喜好,只要在配置文件写对路径就可以了)
  • 然后在 pom 文件中添加一下配置,目的是为了让 webapp 下的 jsp 文件留在 META-INF 中,让 boot 访问到
    <plugins>
      <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
          <executions>
              <execution>
                  <goals>
                      <goal>repackage</goal>
                  </goals>
              </execution>
          </executions>
      </plugin>
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-war-plugin</artifactId>
          <configuration>
              <failOnMissingWebXml>false</failOnMissingWebXml>
          </configuration>
      </plugin>
    </plugins>
    <resources>
      <!-- 打包时将 jsp 文件拷贝到 META-INF 目录下-->
      <resource>
          <!-- 指定 resources 插件处理哪个目录下的资源文件 -->
          <directory>src/main/webapp</directory>
          <!--注意此次必须要放在此目录下才能被访问到-->
          <targetPath>META-INF/resources</targetPath>
          <includes>
              <include>**/**</include>
          </includes>
      </resource>
      <resource>
          <directory>src/main/resources</directory>
          <includes>
              <include>**/**</include>
          </includes>
          <filtering>false</filtering>
      </resource>
    </resources>
    

quick-redis

工作上用到了 redis,就添加了 redis 模块,很简单有 key 就获取,没有就插入

quick-rocketmq

此处的不是 Apache 的 Rocketmq,是阿里云服务上的一个消息队列

quick-logback

springboot 內置的日志管理模块,使用 slf4j

quick-activemq

  • springboot 整合 activemq 服务 非常简单,更负责的配置可以自定义 containerFactory
  • 添加导出消息队列消息但不消费的方法(慎重使用,不知是否会对 mq 服务增加压力)

quick-docker

使用 docker 部署 springboot 的示例 demo,更多内容请见 blog

quick-dynamic-bean

根据条件动态的创建 bean 用到的场景:有的时候本地测试不想使用 mq,可以在将 mq 对应 consumer bean 加上 contional 注解,并 配置条件

2019 年 03 月 14 日 00:12:54 更新 动态创建 bean 的方式:

  • 动态设置属性;
  • 动态设置属性文件,来改变要生成 bean 上的注解内容,如@Jmslistener(des="${key}"),我们可以动态改变 key 来生成不同的 bean

quick-dubbo

整合 dubbo,用的不是官方的 dubbo-stater,用的是这个https://github.com/halober/spring-boot-starter-dubbo 配置很详细 注意 dubbo 的结构

dubbo admin ui



quick-vw-crawler

结合比较流行的框架 SpringBoot 抓取 CSDN 的数据(有关的 Spingboot 的使用可以参考这里) 有关 VW-Cralwer 的介绍可以看这里,简单轻便开源的一款 Java 爬虫框架。

quick-feign

单独使用 feign 做为请求 http 接口的客户端工具

(后面会持续更新)

quick-config-encrypt

配置加密功能(待完成)

quick-jwt

参考https://github.com/murraco/spring-boot-jwt 添加的 jwt 模块,实现网站的简单鉴权

quick-hbase

使用 docker 搭建 hbase 环境,springboot 集成 hbase client,完成基本的 CURD;

quick-kafka

使用 docker 搭建的 kafka 环境,springboot 集成 kafka,完成消息的接受和发送

quick-starter

一个开发 xxx-starter 的示例,帮助你快速开发和部署自己的 xxx-starter

温馨提示

  如果您自己想在本地跑一跑,可以将其 checkout 到本地,直接mvn clean install -U 就 ok 了,如果您只想运行某个模块,直接复制配置文件和代码就 ok 了,如果您在测试某个模块但该模块出错,请尽快联系本人,邮箱:vector4wang@qq.com,我会在第一时间将其修复

欢迎 star、fork 和 pr

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools