# Web快速验证脚手架 **Repository Path**: fayienabeats/springwebarchetype ## Basic Information - **Project Name**: Web快速验证脚手架 - **Description**: Web快速验证脚手架 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-04-27 - **Last Updated**: 2024-10-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 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 3.3.1 - SpringMVC - spring-boot-devtools 服务端校验 - spring-boot-validation 快速工具工具包 - hutool-all 5.8.31 - google.guava 31.0.1 代码简化 - projectlombok 1.18.34 - mapstruct 1.6.2 关系映射持久化框架 - spring-data-jpa - om.querydsl 5.1.0 数据库 - mysql 8.0.20 数据库连接池 - HikariCP 日志管理 - slf4j - logback 构建打包 - gradle 8.9 - java 17 #### 目录 ```shell script 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自动审计 可以自动创建 创建人 创建时间 最后修改人 最后修改时间四个属性 并支持在创建时 更新时 自动填充 `IgnoreNullValueUpdateEventListener` Hibernate忽略Null值更新事件侦听器,解决**外部设置持久化实体部分值域未传值的情况下 错误设置为null**的问题 - 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分支相同的基线 1.3.0 升级SpringBoot为3.3.X 适配Java17迁移