# sp-base-multi-module-java21 **Repository Path**: cocoknight/sp-base-multi-module-java21 ## Basic Information - **Project Name**: sp-base-multi-module-java21 - **Description**: springboot3.5.3 + jdk21 + mybatisplus + satoken + redis + disruptor + dynamic-datasource + sqlite - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-27 - **Last Updated**: 2025-12-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # sp-base-multi-module-java21 这是一个基于 Spring Boot 3.5.3 的多模块 Java 项目,使用 JDK 21 开发,集成了多种常用技术栈,适用于快速构建企业级应用。 ## 技术栈 - **Spring Boot** 3.5.3 - **JDK** 21 - **MyBatis-Plus** + **MyBatis-Plus-Join** - **SaToken**(权限认证框架) - **Redis** - **Disruptor**(高性能事件处理) - **Dynamic-Datasource**(多数据源支持) - **SQLite**(嵌入式数据库) - 启用 Tomcat 虚拟线程和异步支持 ## 模块结构 ### `app` - 主启动模块 - 包含主类 `Application.java` - 配置文件:`application.yml`、`application-dev.yml` ### `auth` - 用户认证与权限管理模块 - 包含 `UserController`、`RoleController`、`UserService` 等核心类 - 使用 SaToken 进行权限控制 ### `common` - 公共工具类和配置模块 - 包含日志、异常处理、Redis 工具、数据库配置、定时任务工具等 - 使用 Disruptor 实现异步日志记录 ### `web` - Web 控制器模块 - 包含测试控制器 `WebController` 和 `MessageController` - 支持表连接查询、消息队列等功能 ## 核心功能 ### 权限控制 - 基于 SaToken 的权限认证系统 - 支持角色权限管理 - 提供登录、登出、密码修改等功能 ### 多数据源支持 - 使用 `dynamic-datasource` 实现多数据源切换 - 支持主从数据库配置 ### 异步日志处理 - 使用 Disruptor 高性能队列实现异步日志记录 - 通过 `LogAspect` 实现请求日志拦截 ### 数据库操作 - 使用 MyBatis-Plus 提供便捷的数据库操作 - 支持分页、条件查询、动态 SQL 等功能 ### 工具类 - 提供丰富的工具类,如: - `IpUtils`:IP 地址处理 - `LocalDateUtils`:日期时间操作 - `BCryptUtils`:密码加密 - `ReflectUtils`:反射工具 ## 配置说明 - `application.yml`:主配置文件 - `application-dev.yml`:开发环境配置文件 - `logback-spring.xml`:日志配置文件 ## 启动方式 1. 确保已安装 JDK 21 2. 使用 Maven 构建项目 3. 运行 `Application.java` 启动 Spring Boot 应用 ## 使用示例 ### 登录接口 ```java @PostMapping("/auth/login") public R login(@RequestBody LoginDto loginDto) ``` ### 获取用户信息 ```java @GetMapping("/user/get/{id}") public R get(@PathVariable Integer id) ``` ### 异步日志记录 ```java @Around("pointcut()") public Object doAround(ProceedingJoinPoint joinPoint) ``` ### 表连接查询 ```java @GetMapping("/join/test") public R testJoin() ``` ## 注意事项 - 项目使用 SQLite 作为默认数据库,如需更换,请修改 `application.yml` 中的数据库配置 - SaToken 配置在 `common` 模块中 - Disruptor 队列大小和策略可在 `MqConfig.java` 中调整 ## 开源协议 该项目采用 MIT 协议。详见 LICENSE 文件。