文章目录
- 一、概述
- 二、Maven 多模块架构设计
- 2.1 父 POM 聚合结构
- 2.2 版本号集中管理
- 2.3 依赖管理(dependencyManagement)
- 2.4 全局依赖(dependencies)
- 2.5 模块依赖关系
- 2.6 各模块职责详解
- 2.7 典型子模块 POM 配置
- 三、wind-common 公共模块详解
- 3.1 包结构设计
- 3.2 实体类设计规范
- 3.3 枚举设计规范
- 四、bootstrap 启动模块详解
- 4.1 启动类注解解析
- 4.2 配置类清单
- 4.3 MybatisPlusConfig 详解
- 五、config 配置模块详解
- 5.1 属性绑定类体系
- 5.2 JWT 配置映射
- 5.3 常量管理
- 六、多环境配置与 Maven Profile 联动
- 6.1 配置文件布局
- 6.2 Spring Profile 激活
- 6.3 Maven Profile 配置
- 6.4 开发环境配置
- 6.5 生产环境配置安全要点
- 七、核心组件配置详解
- 7.1 服务器端口与上下文路径
- 7.2 MyBatis-Plus YAML 配置
- 7.3 HikariCP 数据源优化
- 7.4 Redis Lettuce 连接池
- 7.5 CORS 跨域配置
- 7.6 Swagger/Knife4j 接口文档
- 7.7 文件上传配置
- 八、业务模块结构
- 8.1 管理端模块 `wind-admin`
- 8.2 店铺端模块 `wind-shop`
- 8.3 移动端模块 `wind-front`
- 九、统一返回封装 ApiResult
- 9.1 设计理念
- 9.2 ApiCode 状态码枚举与设计规则
- 9.3 实际返回示例
- 9.4 前端统一处理逻辑
- 十、全局异常处理
- 10.1 GlobalExceptionHandler 完整实现
- 10.2 异常类层次结构
- 10.3 业务异常使用示例
- 十一、Shiro + JWT 认证鉴权体系
- 11.1 整体架构
- 11.2 JwtToken — 认证令牌实体
- 11.3 JwtUtil — Token 工具类
- 11.4 JwtFilter — 核心认证过滤器
- 11.5 JwtRealm — 认证与授权
- 11.6 ShiroConfig 组装
- 11.7 完整登录流程
- 11.8 Redis 三端登录态管理
- 11.9 Token 自动刷新机制
- 11.10 Shiro 权限过滤配置
- 十二、AOP 日志系统
- 12.1 日志类型与配置
- 12.2 日志打印模式
- 12.3 RequestId 请求追踪
- 十三、XSS 防护
- 13.1 三层防护架构
- 13.2 配置启用
- 13.3 Jackson 层防护
- 十四、参数校验体系
- 14.1 Hibernate Validator 使用
- 14.2 自定义校验器示例
- 十五、Maven 构建与打包
- 15.1 常用构建命令
- 15.2 编译插件配置(MapStruct + Lombok 协同)
- 15.3 资源过滤配置
- 15.4 测试跳过配置
- 十六、项目首次启动验证
- 16.1 启动前检查清单
- 16.2 启动方式
- 16.3 启动成功标志
- 16.4 验证接口
- 十七、分页封装与 BaseController 基类
- 17.1 分页参数
- 17.2 BaseController 与 BaseService 基类
- 十八、常见问题与解答
- Q1:启动报错 `Connection refused`?
- Q2:`Bean name conflict` 多模块 Bean 名称冲突?
- Q3:Token 过期了怎么办?
- Q4:店铺端的 `@RequiresPermissions` 是怎么工作的?
- Q5:移动端(front)为什么不走 Shiro 鉴权?
- Q6:BusinessException 为什么不记录日志?
- Q7:如何实现同一个账号只能在一个设备登录?
- Q8:Maven 下载依赖慢?
- Q9:文件上传报错目录不存在?
- 十九、实践练习
- 练习 1:新增一个 Controller
- 练习 2:配置属性绑定验证
- 练习 3:实现自定义异常类型
- 练习 4:为商品接口添加参数校验
- 二十、总结
一、概述
在企业级 Java 项目开发中,一个规范的后端工程结构决定了团队协作效率和项目可维护性的上限。wind Shop 作为一个典型的单体电商应用,采用 Maven 多模块架构 + Spring Boot + MyBatis-Plus + Shiro + JWT 技术栈,将不同职责的代码隔离到独立模块中,实现了清晰的依赖关系和良好的可扩展性。
本文将逐层分析 wind Shop 后端的工程化实践,涵盖以下三大板块:
- Maven 多模块架构:父子工程的版本管理、9 大子模块的职责边界与依赖关系
- 基础工程搭建与配置管理:Spring Boot 启动类注解解析、多环境 Profile 联动、核心组件配置
- 核心框架开发:统一返回封装
ApiResult、全局异常处理、Shiro+JWT 认证鉴权体系、AOP 日志、XSS 防护、参数校验
二、Maven 多模块架构设计
2.1 父 POM 聚合结构
wind Shop 根目录的pom.xml作为父工程,统一管理所有子模块和依赖版本。其打包类型必须为pom,表明该工程不产出 JAR/WAR,仅作为聚合容器和依赖管理中心。