1 Star 0 Fork 0

罗浮第一光矢 / Web快速验证脚手架

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

Web快速验证脚手架

介绍

Web快速验证脚手架

用于快速搭建一个SpringBoot Web项目后端 验证某些思路或者测试某些组件

想法来源于 测试某些后端代码 或者想试试新框架组件 每次都重新搭个框架 也太麻烦了 目标代码或组件 没集成进来 先调试后端框架许久 所以决定预先搭好一个可用的基础骨架 后续可以直接编写业务代码 或者集成新组件

也可作为开发项目的基础框架(大概吧......)

优点

已预先按处理层分模块设计: 分为dao,service,Controller,web-view模块,层次清楚,低耦合,高内聚。

不需要编写冗长的基础框架配置 不需要搭建框架时的报错调试

在Web层直接编写 你需要的Controller类 在Service层直接编写 你需要的Service类

Dao层使用JPA+QueryDSL 默认已集成大部分CRUD方法 PO包内直接部署数据实体对象 集成实体基类后自动支持JPA审计 创建人 创建时间 最后修改人 最后修改时间自动更新

全局请求集成请求流水号(RequestId) 方便链路追踪和调试

使用全局异常处理+非正常流程直接抛业务异常方式 避免非正常流程的样板重复异常处理过程

使用切面事务处理 默认支持大部分CRUD方法的对应等级事务 不需要在Service方法上到处添加@Transcation

使用三剑客 lombok+mapstruct+hibernate-validator 进行代码简化 消除冗长的大量重复样板代码

选用技术

核心框架

  • SpringBoot 2.6.1
  • SpringMVC
  • spring-boot-devtools

服务端校验

  • spring-boot-validation

快速工具工具包

  • hutool-all 5.7.16
  • google.guava 31.0.1

代码简化

  • projectlombok 1.18.22
  • mapstruct 1.4.2.Final

关系映射持久化框架

  • spring-data-jpa
  • om.querydsl 5.0.0

数据库

  • mysql 8.0.20

数据库连接池

  • HikariCP

日志管理

  • slf4j
  • logback

构建打包

  • gradle 7.3
  • java 17

目录

FastProject
├─.gradle gradle配置目录
├─database 数据库文件
├─docker 容器配置文件
├─gradle gradle包装器目录
├─log 日志
├─fast-app 应用模块              
├─fast-common 通用组件模块
├─fast-dao 数据库借口模块
├─fast-service 业务服务模块
└─fast-web Web接口层模块

预制组件说明

  • 1.拦截器 fast-web GlobalExceptionResolverAdvice.java 全局异常处理类 所有业务异常和一些已知的框架层异常都在此做出处理 业务中代码在出现错误后直接抛出业务异常 由全局异常处理器处理 不用写单独的处理流程

GlobalRequestInterceptor.java 全局请求拦截器 在请求到达接收响应的控制层Action类进行预处理 可以设置一些后续需要使用的请求上下文内容 这里设置了全局请求流水号 requestId

  • 2.事务管理器 fast-app TxAdviceConfig.java 基于切面的事务管理器 配置了org.fast.project.service包下的所有方法的自动事务管理 支持发生异常的情况下 方法事务自动回滚 所以在 @Service 层不需要手动在方法上添加 @Transactional 注解进行事务自动回滚

  • 3.持久化配置 fast-app JpaAndQueryDslConfig.java QueryDSL配置类 注入JPAQueryFactory Bean 以启用QueryDSL支持

JpaAndQueryDslConfig.java 类上添加注解@EnableJpaAuditing 已启用JPA审计支持

JpaAuditingAware.java 配置JPA审计功能

BaseEntity.java 持久化对象基类 支持JPA自动审计 可以自动创建 创建人 创建时间 最后修改人 最后修改时间四个属性 并支持在创建时 更新时 自动填充

  • 4.开发简化

使用Java简化三剑客 lombok+mapstruct+hibernate-validator 进行代码简化

  • 5.日志

使用logback作为日志框架 spring-logback.xml为日志配置文件 已引入Spring原生日志的配置 启用了彩色日志打印 启用了JPA SQL日志格式化 SQL 参数打印 支持根据spring侧写文件传入不同的日志配置

  • 6.异常

fast-common 使用 AbstractBusinessException.java作为全局业务异常的基类 业务异常流程使用业务异常类处理 不影响正常流程

  • 7.工具类

fast-common Json对象转换工具类 JsonUtil.java 支持Json到对象 对象到Json的转换 SQL查询帮助工具类 QueryHelpUtil.java 支持like查询字符串生成等 线程本地对象工具 ThreadLocalUtil.java 支持线程本地对象属性保存等

  • 8.视图

在fast-web src/.../vo目录下部署传送到请求端的数据对象视图 在fast-service src/.../do目录下部署服务处理的业务对象视图 在fast-dao src/.../po目录下部署对应数据库表的持久化对象视图

  • 9.应用配置

使用 springboot application.yml 配置文件 支持多侧写配置 本地开发环境 测试环境 生产环境 启动时 可使用 spring.profiles.active="prod" 来设置不同环境的配置文件

构建打包

gradle build 命令 执行构建 构建完毕后会生成jar包 gradle build-docker-image 命令 执行生成docker镜像任务 gradle bootjar 命令 执行生成bootjar包任务

容器化

在 ./docker目录下已配置好dockerfile 使用 alpine:3.15.0作为基础镜像

数据库

使用 mysql 8.0.20作为数据库
在 ./database 目录下已配置好数据库镜像获取文件 docker-db.md 按说明拉取数据库即可

使用 init_db.sql文件初始化数据库

使用说明

  • 项目启动 fast-app FastProjectMain.java主类启动

版本发布记录

base-1.0.0 基础版首个发布

1.0.1 新增sql修改 ,修改gradle删除部分无用依赖
1.1.0 升级为Gradle多模块项目 重构项目结构和依赖管理
1.1.1 升级全部依赖为最新版本 依赖版本统一管理
1.2.0 升级SpringBoot为2.6.X 升级Gradle 7.X+ 升级JDK为Java17
1.2.1 支持在根目录打包 新增容器分层构建 新增spring监控
1.2.2 完善可用的分层容器构建
1.2.3 修改为多层配置文件
1.2.4 小版本迭代
1.2.5 升级SpringBoot为2.7.X 完善对JPA审计支持
1.2.6 修复一些问题 更新到sec分支相同的基线

MIT License Copyright (c) 2020 拉法利亚 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

Web快速验证脚手架 展开 收起
Java 等 2 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/striketheblood/springwebarchetype.git
git@gitee.com:striketheblood/springwebarchetype.git
striketheblood
springwebarchetype
Web快速验证脚手架
master

搜索帮助

14c37bed 8189591 565d56ea 8189591