# java-template **Repository Path**: template_50/java-template ## Basic Information - **Project Name**: java-template - **Description**: 后端服务模版,boot3,satoken - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-26 - **Last Updated**: 2026-04-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java-Template 后台管理系统 基于 Spring Boot 3 + MyBatis-Plus 的后台管理系统模板,采用多模块架构设计,内置用户管理、角色管理、菜单管理、部门管理、字典管理等核心业务功能。 ## 技术栈 | 类别 | 技术 | 版本 | | -------------- | --------------------------- | ------------ | | 基础框架 | Spring Boot | 3.0.5 | | JDK | OpenJDK | 17 | | ORM 框架 | MyBatis-Plus | 3.5.3.1 | | 权限认证 | Sa-Token | 1.44.0 | | 数据库连接池 | Druid | 1.2.20 | | API 文档 | Knife4j (OpenAPI 3) | 4.4.0 | | Excel 导入导出 | EasyExcel | 4.0.3 | | 文件存储 | X-File-Storage (阿里云 OSS) | 2.2.0 | | 消息队列 | RabbitMQ | - | | 定时任务 | SnailJob | 1.10.0-beta1 | | 缓存 | Redis | - | | SQL 解析 | JSqlParser | 4.6 | ## 模块说明 ``` java-template ├── main # 启动模块,包含 Controller 层和配置文件 ├── common # 通用模块,包含基础类、工具类、自定义注解等 ├── core # 核心模块,包含 AOP 切面、数据源、中间件配置等 ├── modules # 业务模块 │ └── system # 系统管理模块(Domain / Mapper / Service) └── sqls # 数据库初始化脚本 ``` ### 模块职责 - **main** — 应用启动入口,包含所有 Controller、Spring Boot 配置文件 - **common** — 通用基础能力,提供实体基类、自定义注解、全局异常处理、统一返回结果、工具类、MyBatis-Plus 配置、Redis 配置、Knife4j 配置 - **core** — 核心基础设施工具,包含 AOP 切面(数据权限/变更记录/限流)、多数据源、Excel 工具、RabbitMQ 配置、Sa-Token 权限接口实现、SnailJob 定时任务 - **modules/system** — 系统管理业务模块,包含 Domain、Mapper、Service,按业务拆分 ## 功能列表 ### 系统管理 | 功能 | 说明 | 接口前缀 | | -------- | ----------------------------------- | -------------- | | 用户管理 | 用户 CRUD、角色分配、Excel 导出 | `/system/user` | | 角色管理 | 角色 CRUD、菜单权限分配、数据权限 | `/system/role` | | 菜单管理 | 菜单 CRUD(目录/菜单/按钮三级结构) | `/system/menu` | | 部门管理 | 部门树形结构 CRUD | `/system/dept` | | 字典管理 | 字典类型 + 字典数据 CRUD | `/system/dict` | | 系统登录 | 登录认证、Token 管理 | `/login` | ### 通用能力 - **权限认证** — 基于 Sa-Token 的登录认证与接口鉴权(`@Auth` 注解) - **数据权限** — 基于角色的数据范围过滤(全部/自定义/本部门/本部门及以下) - **接口限流** — IP 限流(`@IpLimiter`)与普通限流(`@RateLimiterAnnotation`) - **数据变更记录** — `@DbChange` 注解自动记录数据变更 - **Excel 导出** — EasyExcel 集成,支持下拉选择导出 - **多数据源** — 动态数据源切换(Druid 主从) - **文件存储** — 阿里云 OSS 文件上传 - **消息队列** — RabbitMQ 消息收发 - **定时任务** — SnailJob 分布式任务调度 ## 项目结构 ``` com.wj ├── main # 启动模块 │ ├── controller │ │ ├── common # 通用接口 │ │ └── system # 系统管理接口 │ │ ├── SysLoginController │ │ ├── SysUserController │ │ ├── SysRoleController │ │ ├── SysMenuController │ │ ├── SysDeptController │ │ ├── SysDictTypeController │ │ └── SysDictDataController │ └── MainApplication # 启动类 │ ├── common # 通用模块 │ └── custom │ ├── annotation # 自定义注解 │ │ ├── Auth # 权限校验 │ │ ├── DataScope # 数据权限 │ │ ├── DbChange # 数据变更记录 │ │ ├── ExcelSelected # Excel 下拉选择 │ │ ├── IpLimiter # IP 限流 │ │ └── RateLimiterAnnotation # 接口限流 │ ├── base │ │ ├── BaseEntity # 实体基类(公共字段 + 逻辑删除) │ │ └── BaseEnum # 枚举基类 │ ├── expection # 全局异常处理 │ ├── interceptor # 认证拦截器 │ ├── rateLimiter # 限流器实现 │ ├── result # 统一返回结果 │ └── utils # 工具类 │ ├── mybatisplus # MyBatis-Plus 配置 │ │ ├── MybatisPlusConfiguration # 分页 + 数据权限插件 │ │ ├── MybatisDataPermissionHandler │ │ ├── MybatisMetaObjectHandler # 自动填充 │ │ └── DataScopeContextHolder # 数据权限上下文 │ ├── knife4j # API 文档配置 │ └── redis # Redis 配置 │ ├── core # 核心模块 │ ├── aspectj # AOP 切面 │ │ ├── DataScopeAspectj # 数据权限切面 │ │ ├── DbChangeAspectj # 数据变更切面 │ │ └── IpLimterAspectj / RateLimiterAspectj # 限流切面 │ ├── config # Web 配置 │ ├── dataSource # 多数据源 │ ├── excel # Excel 工具 │ ├── rabbitmq # RabbitMQ 配置与监听 │ ├── satoken # Sa-Token 权限接口实现 │ └── snailjob # 定时任务示例 │ └── modules/system # 系统管理模块 ├── domain # 实体类 │ ├── SysUser / SysRole / SysMenu / SysDept │ ├── SysDictType / SysDictData │ ├── dto/ # 数据传输对象 │ └── vo/ # 视图对象(Form / List) ├── mapper # MyBatis Mapper 接口 └── service # 业务逻辑层 └── impl/ # 实现类 ``` ## 数据库设计 | 表名 | 说明 | | ----------------- | ---------------------------- | | sys_user | 用户信息表 | | sys_role | 角色信息表 | | sys_menu | 菜单权限表(目录/菜单/按钮) | | sys_dept | 部门表(树形结构) | | sys_dict_type | 字典类型表 | | sys_dict_data | 字典数据表 | | sys_user_role | 用户-角色关联表 | | sys_role_menu | 角色-菜单关联表 | | user_behavior_log | 用户行为记录表 | 初始化脚本位于 `sqls/init.sql`,包含建表语句和基础数据。 ## 快速开始 ### 环境要求 - JDK 17+ - MySQL 8.0+ - Redis 6.0+ - RabbitMQ 3.x+(可选) - Maven 3.8+ ### 配置 1. 执行 `sqls/init.sql` 初始化数据库 2. 修改 `main/src/main/resources/application-local.yml` 中的数据库、Redis 等连接信息 3. 根据环境切换 `application.yml` 中的 `spring.profiles.active` ### 启动 ```bash # 编译 mvn clean package -DskipTests # 运行 java -jar main/target/main-0.0.1.jar ``` 启动成功后访问: - 接口地址:`http://localhost:30000/api` - API 文档:`http://localhost:30000/api/doc.html` ### 默认账号 | 账号 | 密码 | 说明 | | ----- | ---------------- | ---------- | | admin | (AES 加密存储) | 超级管理员 | ## 扩展开发 ### 新增业务模块 1. 在 `modules/` 下创建新模块,参照 `system` 模块的目录结构(domain / mapper / service) 2. 在父 POM 中注册模块 3. 在 `main` 模块中创建对应 Controller 4. 在 `sqls/` 中维护数据库脚本 ### 新增接口鉴权 在 Controller 方法上添加 `@Auth(perms = "模块:功能:操作")` 注解,权限标识需在菜单管理中配置。 ### 新增数据权限 在 Service 方法上添加 `@DataScope` 注解,配合 `DataScopeContextHolder` 实现数据范围过滤。