当前位置: > > > SpringBoot - 使用ApplicationPower快速生成初始项目(自动添加常用配置、代码)

SpringBoot - 使用ApplicationPower快速生成初始项目(自动添加常用配置、代码)

    每次创建一个新的 Sping Boot 项目后,我们常常都要进行一些重复工作,比如:引入依赖、创建 assembly 配置、以及常用代码等等。我们可以借助 ApplicationPower 这个开源的项目生成脚手架来快速创建项目,从而减少各种重复的劳动并实现项目前期标准化。 

一、基本介绍 

1,什么是 ApplicationPower?

    ApplicationPower 是一个快速的项目生成脚手架,其使用简单但是在工程化上面的功能却相当完善,包括:Spring Boot 项目整体框架初始化生成、基于 mybatis 的代码生成、 项目的简单部署打包一体化服务脚本生成、docker 容器化配置生成、kubernetes 容器部署 yaml 模板自动生成(当前支持 deploymentserviceingress), 当然 ApplicationPower 还提供 smart-doc 这样颠覆 swagger 类似传统文档工具,做到无注解、无侵入和更加智能化的 api 文档自动生成工具。

2,ApplicationPower 功能

  • 一键创建 maven 或者 gradle 构建的 Spring Boot 项目,开箱即运行
  • 支持基于 mybatis daomodelservicecontroller 的代码生成
  • 支持 service 层和 controller 层的 mock 单元测试生成
  • 自主化创建 .gitignore
  • 支持基于 assembly 打包的 Spring Boot 工程化启动脚本和部署说明文档
  • 支持 Spring Boot 项目容器化构建 Dockerfile 文件创建
  • 自动创建项目的 kubernates 容器编排部署 yaml 文件。
  • 自动集成当前基于代码推导的零侵入 restful api 文档生成工具。
  • 支持自动集成 atomikos 分布式事务管理(谨慎使用,druid 整合多数据源 mysql 驱动请先使用 6.0.6 版本)
  • 吸纳开源提供一些可以使用的基础工具类
  • 超自由的代码生成配置,自由控制自己需要的。
  • 省心生成通用的 restful exception 处理类,和 jsr303 参数验证错误处理模板。

二、开始生成项目

(1)下载并打开 ApplicationPower 项目,首先根据自己实际需求,修改 generator.properties 中的配置(在 appliction-power/src/main/resources 下):
#是否生成注释
generator.comment=true
#代码输出目录
generator.outDir=/Volumes/BOOTCAMP
#基包名
generator.basePackage=com.hangge
#数据库表前缀,例如表t_user则需要去除前缀生成正确的实体
generator.table.prefix=t_
#指定需要用哪张数据表生成代码,不指定则生成全部表的代码,指定表名后下面的过滤器将失效
generator.table.name=t_book
# @since 1.6.3
# 过滤数据库表,生成的时候只生成和过滤器匹配的表
generator.table.filter.prefix=
# app版本号
generator.application.version=1.0
#生成项目的名称
generator.applicationName=hangge-demo
#需要生成的代码层
#可生成的代码层dao,model,service,controller,mapper,controllerTest,serviceTest
generator.layers=dao,model,service,controller,mapper,controllerTest,serviceTest
#需要生成的方法,方法间用英文逗号隔开,写错将无法生成基础方法
#可生成的方法包括add,update,delete,query,page,queryToListMap。
# query方法查询单条数据,page生成分页,queryToListMap是查询结果以List<Map<Stirng,Object>>返回
generator.methods=add,update,delete,query,page
#mybatis自动转驼峰映射,默认开启
generator.mapUnderscoreToCamelCase=true
#是否开启mybatis缓存,只能填写true或者false
generator.enableCache=true
#是否需要生成mybatis mapper配置文件的ResultMap
#默认不生成result
generator.resultMap=false
# @since 1.5
# 打包springboot时是否采用assembly
# 如果采用则将生成一系列的相关配置和一系列的部署脚本
generator.package.assembly=true
# @since 1.6.4
# 指定springboot项目的日志文件,避免使用assembly打包后在window修改脚本的烦恼
# 推荐根据自己的日志在自动生成前指定好,屏蔽在系统间修改脚本的发生字符不一致问题
generator.application.logConfig=log4j2.xml
# @since 1.7.1
# 该值为true时会为springboot maven项目创建Dockerfile和相应的构建脚本
generator.docker=true
# @since 1.6
# 多数据源多个数据数据源用逗号隔开[就是给不同的数据源一个别名],不需要多数据源环境则空出来
# 对于多数据源会集成分布式事务
# uage:generator.multiple.datasource=oracle,mysql
generator.multiple.datasource=
# @since 1.6
# jta-atomikos分布式事务支持
generator.jta=false
# @since 1.7.2
# default is use maven build,current support maven and gradle
# generator.build.tool=gradle //use gradle
generator.build.tool=
# @since 1.7.8
# if true use lombok
generator.lombok=true
# @since 1.7.9
# 是否需要生成db相关代码
generator.useDb=true
# @since 1.8.0
# 是否支持mybatis-plus
generator.useMybatisPlus=true

(2)接着修改数据库配置 jdbc.properties
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.username=root
jdbc.password=hangge1234
jdbc.url=jdbc:mysql://localhost:3306/hangge2?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useUnicode=true&useSSL=false

(3)最后运行 Test下的 GenerateCodeTest 即可生成项目:

三、生成的项目介绍

1,自动生成了常用代码

(1)项目创建后,可以发现已经自动生成支持基于 mybatisdaomodelservicecontroller 的代码:

(2)项目启动后,我们直接访问一个自动生成的查询接口测试下,这里我们查询 book 表的前 10 条数据:

2,自动生成了相关测试代码

(1)项目还自动生成了 service 层和 controller 层的 mock 单元测试:

(2)随便执行一个 controller 的单元测试,执行结果如下:

3,使用 Log4j2 日志框架

(1)创建的项目会自动使用 Log4j2 日志框架(异步输出日志模式)替换默认的 Logback

(2)控制台输出日志样例如下:

4,全局的异常处理

项目创建完毕后会自动生成通用的 restful exception 处理类,和 jsr303 参数验证错误处理模板。

5,集成常用的工具库

(1)项目创建完毕后自动添加了 common-util 依赖(这里面都是一些开发中常用的工具类,是作者吸纳了一些开源的基础工具类整合而成,目前已发布到中央仓库)
(1)common-util 下包含众多的工具类,例如:
  • DateTimeUtil
  • StringUtil
  • ValidateUtil
  • IpUtil
  • AESUtil // @since 0.2
  • MD6Util // @since 0.2
  • RandomUtil
  • FileUtil
  • RSAUtil //@since 0.3
  • OkHttp3Util //since 0.3
  • ......
(2)除此之外 common-util 中已包含一些公用的 filter,如跨站请求伪造的过滤器 RefererFilter,防止 Xss sql 注入的 XssAndSqlFilter
<dependency>
   <groupId>com.github.shalousun</groupId>
   <artifactId>common-util</artifactId>
   <version>1.9.0</version>
 </dependency>

(2)工具类源码我们可以在 ApplicationPower 工程下的 Common-util 模块查看:

(3)而相关工具类的详细使用方法文件在 doc 下:

6,自动创建 .gitignore 文件

(1)项目创建完毕后会自动生成 .gitignore 文件:

(2)下面是当前配置下生成的文件内容:
# Maven
target/
*.ser
*.ec

# Gradle
build/
.gradle


# IntelliJ Idea
.idea/
out/
*.ipr
*.iws
*.iml

# Eclipse
.classpath
.project
.settings/
.metadata/

# OS X
.DS_Store

7,自动集成 Druid 以及 Druid 监控页面

(1)项目创建后会自动集成 Druid 数据库连接池以及监控页面,不过由于新版的 Druid 配置有变,我们首先需要修改 application.yml 文件增加一个 druid 节点层级(否则访问监控页面会发现监控页面中“SQL 监控”内容为空):
spring:
  profiles:
    active: dev
---
spring:
  profiles : dev
  datasource:
    druid:
      name: mydb
      type: com.alibaba.druid.pool.DruidDataSource
      url: jdbc:mysql://localhost:3306/hangge2?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useUnicode=true&useSSL=false
      username: root
      password: hangge1234
      driver-class-name: com.mysql.cj.jdbc.Driver

(2)DruidConfig 中为相关的监控配置,包括:监控页面的访问路径、用户名密码、访问白名单黑名单、过滤规则等。

(3)启动项目先随便请求几个 Controller 接口,然后访问监控页面,切换到“URI 监控”会显示如下内容:

(4)切换到“SQL 监控”会显示如下内容:

8,自动集成 restful api 文档生成工具 smart-doc

(1)项目创建完毕后,会自动集成当前基于代码推导的零侵入 restful api 文档生成工具:smart-doc。我们只需根据需求点击相应的 maven 插件既可以自动生成相应类型的文档:

(2)比如我们这里选择生成 html 类型的文档(smart-doc:html),生成的文档会保存到项目的 static/doc 文件夹下面,我们可以直接通过浏览器进行访问:

(3)我们也可以生成整个项目的或者某个微服务所有接口的 Postman json 文件(smart-doc:postman),然后通过将这个 json 文件导入 Postman Collections 做测试:

9,自动集成 assembly 实现项目打包

(1)生成的项目支持基于 assembly 打包的 Spring Boot 工程化启动脚本和部署说明文档,其相关配置在 src/main/assembly 文件夹下:

(2)使用 mvn package 命令进行进行打包,打包后在 target 下会自动生成一个压缩包:

(3)我们可以直接将这个压缩包上传到服务器进行部署,解压后执行 bin 文件夹下的 start.sh 即可启动服务(Windows 系统执行 start.bat),执行 stop.sh 则可停止服务:

10,自动创建 Dockerfile 文件

(1)项目创建完毕后会自动创建 Spring Boot 项目容器化构建 Dockerfile 文件:

(2)然后执行 docker build 命令就可以自动生成镜像:

(3)执行完毕后通过 docker ps 命令可以看到镜像确实已经创建成功:

(4)我们使用 docker run 命令即可启动容器:
docker run -it -d -p 8080:8080 com.hangge/hangge-demo:1.0

11,自动创建 K8s 容器编排部署 yaml 文件

生成的项目还会自动创建项目的 kubernates 容器编排部署 yaml 文件,方便我们在 K8s 集群上面部署:
评论0