6bd0c0477e2aed9dc0f22489c98fc2c9e6924b91
xtools-app 项目设计文档
一、功能和用途
1.1 项目概述
- 项目名称:xtools-app
- 项目版本:1.0.0
- 父POM:org.xujun:xtools-parent-cloud:5.0.0
- 项目定位:基础应用平台,提供企业级应用开发的核心功能和公共模块,支持单体部署和微服务部署两种模式
- 组织:org.xujun
1.2 技术特点
- 采用最新的 JDK 25 版本,充分利用新特性(ScopedValue、虚拟线程、Record等)
- 基于 Spring Boot 4.0.5 构建,支持自动配置和快速开发
- 集成 Spring Cloud 2025.1.1 微服务框架
- 使用 Spring Cloud Alibaba 2025.1.0.0 微服务组件
- 使用 MyBatis-Plus 3.5.16 简化数据访问层开发(基于 MyBatis 4.0.1)
- 使用 Spring Data Elasticsearch(基于 Elasticsearch Client 9.2.6)实现日志存储和检索
- 支持 Nacos 3.1.1 服务注册与发现、配置中心
- 集成 Sentinel 1.8.9 实现流量控制和熔断降级
- 使用 Spring Data Redis(基于 Lettuce 6.8.2)实现分布式缓存
- 使用 Spring AMQP 4.0.2(RabbitMQ Client 5.27.1)实现异步消息处理
- 支持 Knife4j 4.5.0(基于 SpringDoc OpenAPI 3.0.3)自动生成 API 文档
- 使用 Druid 1.2.28 数据库连接池
- 使用 SM2/SM3 国密算法保障密码和数据安全
1.3 核心功能
graph TB
subgraph 系统管理模块
A1[用户管理<br/>用户增删改查,角色分配,密码管理]
A2[角色管理<br/>角色配置,权限分配,菜单分配]
A3[菜单管理<br/>树形结构,动态加载,按钮权限]
A4[部门管理<br/>树形结构,人员管理]
A5[字典管理<br/>类型管理,字典项管理]
A6[日志管理<br/>操作日志,登录日志,ES存储]
A7[通知管理<br/>通知发布,用户通知,已读未读]
A8[任务管理<br/>定时任务配置,任务监控]
A9[系统监控<br/>服务器监控,JVM监控]
A10[JAR管理<br/>JAR加载,JAR监控]
A11[文件管理<br/>文件上传,S3存储]
A12[参数管理<br/>系统参数配置]
A13[风控管理<br/>IP限流,URI限流]
A14[地址管理<br/>地址解析,IP归属]
end
subgraph 代码生成模块
B1[数据源管理<br/>多数据源,连接测试]
B2[表结构管理<br/>表查询,字段配置,同步]
B3[代码生成<br/>参数配置,模板渲染,ZIP下载]
B4[代码预览<br/>代码查看,多模板支持]
end
subgraph 公共模块
C1[缓存模块<br/>Redis缓存,缓存枚举,AOP缓存]
C2[远程调用<br/>OpenFeign,微服务通信]
C3[JAR管理<br/>动态JAR加载,运行时扩展]
C4[日志总线<br/>事件发布,MQ异步写入ES]
C5[日志过滤<br/>请求拦截,操作日志采集]
C6[消息队列<br/>RabbitMQ,异步处理,错误重试]
C7[任务调度<br/>异步任务,定时任务,Redis分布式锁]
C8[限流模块<br/>Sentinel集成,流量控制]
end
subgraph 监控模块
D1[监控服务端<br/>Spring Boot Admin Server]
D2[监控客户端<br/>Spring Boot Admin Client]
end
mindmap
root((xtools-app<br/>基础应用平台))
系统管理
用户管理
增删改查
角色分配
密码管理
状态管理
角色管理
角色配置
权限分配
菜单分配
菜单管理
树形结构
动态加载
按钮权限
部门管理
树形结构
人员管理
字典管理
类型管理
字典项管理
日志管理
操作日志
ES存储检索
通知管理
通知发布
用户通知
文件管理
本地上传
S3存储
风控管理
IP限流
URI限流
代码生成
数据源管理
多数据源
连接测试
表结构管理
表同步
字段配置
代码生成
Velocity模板
ZIP下载
代码预览
多模板预览
公共模块
缓存管理
Redis缓存
缓存枚举
远程调用
OpenFeign
日志处理
日志总线
日志过滤
消息队列
RabbitMQ
任务调度
异步任务
定时任务
graph LR
User[用户] --> Login[登录认证]
User --> Menu[菜单访问]
User --> Data[数据操作]
Login --> Auth[认证授权]
Auth --> Token[Token管理]
Auth --> Redis[Redis缓存]
Menu --> Perm[权限验证]
Role[角色] --> Perm
Data --> LogFilter[日志过滤器]
LogFilter --> LogBus[日志总线]
LogBus --> MQ[RabbitMQ]
MQ --> LogMq[日志消费者]
LogMq --> ES[Elasticsearch]
Cache[Redis缓存] --> Data
Gen[代码生成] --> DB[数据库]
Gen --> Velocity[Velocity模板]
二、项目结构设计
2.1 整体架构
graph TD
xtools-app[xtools-app<br/>基础应用平台<br/>v1.0.0] --> common[xtools-app-common<br/>公共模块]
xtools-app --> sys[xtools-app-sys<br/>系统管理模块]
xtools-app --> gen[xtools-app-gen<br/>代码生成模块]
xtools-app --> monitor[xtools-app-monitor<br/>监控模块]
xtools-app --> standalone[xtools-app-standalone<br/>单体部署模块]
common --> cache[common-cache<br/>缓存模块]
common --> call[common-call<br/>远程调用模块]
common --> jar[common-jar<br/>JAR管理模块]
common --> job[common-job<br/>任务调度模块]
common --> log[common-log<br/>日志模块]
common --> mq[common-mq<br/>消息队列模块]
common --> sentinel[common-sentinel<br/>限流模块]
common --> task[common-task<br/>异步任务模块]
log --> log-bus[log-bus<br/>日志总线]
log --> log-filter[log-filter<br/>日志过滤器]
sys --> sys-api[sys-api<br/>系统API接口]
sys --> sys-auth[sys-auth<br/>认证授权]
sys --> sys-biz[sys-biz<br/>系统业务逻辑]
sys --> sys-boot[sys-boot<br/>系统微服务启动]
sys --> sys-call[sys-call<br/>系统远程调用]
sys --> sys-file[sys-file<br/>文件管理]
sys --> sys-file-web[sys-file-web<br/>文件Web服务]
sys --> sys-log-es[sys-log-bus-elasticsearch<br/>日志ES存储]
sys --> sys-param[sys-param<br/>系统参数]
sys --> sys-scheduled[sys-scheduled<br/>定时任务]
sys --> sys-risk[sys-risk<br/>风控管理]
gen --> gen-biz[gen-biz<br/>代码生成业务]
gen --> gen-boot[gen-boot<br/>代码生成微服务启动]
monitor --> monitor-boot[monitor-boot<br/>监控服务端]
monitor --> monitor-client[monitor-client<br/>监控客户端]
2.2 分层架构
flowchart TB
subgraph Controller层
A1[接收HTTP请求]
A2[参数验证<br/>Valid]
A3[调用Service层]
A4[返回统一响应<br/>Result]
end
subgraph Service层
B1[业务逻辑处理]
B2[事务控制<br/>Transactional]
B3[调用Mapper层]
B4[缓存操作<br/>Redis]
end
subgraph Mapper层
C1[MyBatis-Plus<br/>BaseMapper]
C2[数据库访问]
C3[SQL执行]
end
subgraph 横切关注点
D1[AuthFilter<br/>认证过滤器]
D2[LogBus<br/>日志总线]
D3[Sentinel<br/>流量控制]
D4[MqErrorHandle<br/>消息错误处理]
end
A1 --> A2 --> A3 --> B1
B1 --> B2 --> B3 --> C1
C1 --> C2 --> C3
A1 -.-> D1
A1 -.-> D2
A1 -.-> D3
B1 -.-> D4
2.3 模块职责
| 层级 | 模块 | 职责说明 |
|---|---|---|
| Controller层 | SysUserController、SysLoginController等 | 接收HTTP请求、参数验证(@Valid)、调用Service层、返回统一响应(Result) |
| Service层 | SysUserServiceImpl、SysLoginServiceImpl等 | 实现业务逻辑、事务控制(@Transactional)、调用Mapper层、缓存操作 |
| BaseService层 | SysUserBaseService等 | 继承MyBatis-Plus ServiceImpl,提供基础CRUD操作 |
| Mapper层 | SysUserMapper、SysRoleMapper等 | 继承MyBatis-Plus BaseMapper,数据库访问、SQL执行 |
| Entity层 | SysUser、SysRole、SysMenu等 | 数据库实体映射 |
| DTO层 | Req(请求)、Resp(响应)、Excel | 数据传输对象 |
| Convert层 | SysUserConvert、SysRoleConvert等 | MapStruct对象转换 |
| Config层 | SysConfig、ApiConfig等 | 配置类 |
| MQ层 | SysLogMq、SysTaskMq等 | 消息队列消费者 |
| Job层 | BaseJob、SysLogJob等 | 定时任务、异步任务 |
| Utils层 | PasswdUtils、AuthUtils等 | 工具类 |
2.4 包结构设计
xtools.app.{module}
├── controller # 控制器层
├── service # 服务接口
│ ├── base # 基础服务(继承ServiceImpl)
│ └── impl # 服务实现
├── mapper # 数据访问层
├── model
│ ├── entity # 实体类
│ ├── dto
│ │ ├── req # 请求DTO(AddReq、UpdateReq、PageReq)
│ │ ├── resp # 响应DTO
│ │ └── excel # Excel导入导出DTO
│ └── vo # 视图对象
├── convert # MapStruct转换器
├── config # 配置类
├── utils # 工具类
├── mq # 消息队列处理
├── job # 定时任务
└── es # Elasticsearch相关
2.5 启动模块
项目支持两种部署模式:
| 模块 | 说明 |
|---|---|
| xtools-app-standalone | 单体部署模式,包含所有模块,通过 spring-boot-maven-plugin 打包为可执行JAR |
| xtools-app-sys-boot | 微服务模式 - 系统管理服务 |
| xtools-app-gen-boot | 微服务模式 - 代码生成服务 |
| xtools-app-monitor-boot | 微服务模式 - 监控服务 |
三、项目功能设计
3.1 认证授权设计
认证流程
flowchart TD
A[用户请求登录] --> B[前端获取SM2公钥]
B --> C[用户输入账号密码<br/>使用SM2公钥加密]
C --> D{验证验证码}
D -->|验证码已过期| E[返回验证码已过期]
D -->|验证码错误| F[返回验证码错误]
D -->|验证成功| G[后端SM2解密密码]
G --> H{查询账号}
H -->|账户不存在| I[返回账户不存在]
H -->|账户被禁用| J[返回账户被禁用]
H -->|账户正常| K{SM3密码比对}
K -->|密码错误| L[返回密码错误]
K -->|密码正确| M[查询用户角色]
M --> N[生成Token<br/>缓存用户信息到Redis]
N --> O[返回TokenDto]
验证码机制
系统支持两种验证码模式(随机切换):
- GIF动态验证码:基于 Easy Captcha 生成动态图片验证码
- 算术验证码:随机生成加减法算术题图片
验证码通过 Redis 缓存(AppCache.UID_CAPTCHA,过期时间60秒)。
RBAC权限模型
graph TD
User[用户 SysUser] -->|多对多| UserRole[用户角色关联<br/>SysUserRole]
UserRole -->|多对多| Role[角色 SysRole]
Role -->|多对多| RoleMenu[角色菜单关联<br/>SysRoleMenu]
RoleMenu -->|多对多| Menu[菜单权限 SysMenu]
Menu --> M1[页面菜单]
Menu --> M2[按钮权限]
Menu --> M3[接口权限]
权限验证流程
flowchart TD
A[用户发起请求] --> B{判断请求类型}
B -->|微服务请求| C[验证Cloud Token]
B -->|常规请求| D[获取请求URI]
C --> C1{Token有效?}
C1 -->|无效| C2[返回UNAUTHORIZED]
C1 -->|有效| C3[传递头部信息]
C3 --> C4[校验掩码设置]
C4 --> C5[放行请求]
D --> D1{URI在权限白名单?}
D1 -->|是| D2[放行请求]
D1 -->|否| D3{获取UID}
D3 -->|UID为空| D4[返回METHOD_NOT_ALLOWED]
D3 -->|UID存在| D5{URI在登录白名单?}
D5 -->|是| D2
D5 -->|否| D6{验证AccessToken}
D6 -->|无效| D7[返回UNAUTHORIZED]
D6 -->|有效| D8{校验URI访问权限}
D8 -->|无权限| D9[返回FORBIDDEN]
D8 -->|有权限| D10[设置上下文信息]
D10 --> D11[校验掩码设置]
D11 --> D2
认证模式
系统支持两种认证模式,通过请求头 Cloud 标识区分:
- 微服务认证:验证 Cloud Token(一次性令牌,Redis Hash存储)
- 常规认证:验证 UID + AccessToken + URI权限
3.2 日志管理设计
日志处理流程
flowchart LR
A[HTTP请求] --> B[LogFilter<br/>日志过滤器]
B --> C[采集请求信息<br/>URI,参数,IP,UserAgent]
C --> D[LogBus<br/>日志总线]
D --> E[RabbitMQ<br/>异步消息队列]
E --> F[SysLogMq<br/>日志消费者]
F --> G[LogBusService<br/>日志处理服务]
G --> H[Elasticsearch<br/>日志存储]
日志类型
| 类型 | 说明 | 处理方式 |
|---|---|---|
| 操作日志 | 用户操作行为记录 | LogFilter采集 -> MQ -> ES |
| 系统日志 | 系统运行日志 | LogBus记录 -> MQ -> ES |
| 任务日志 | 定时任务执行日志 | BaseJob记录 -> LogBus -> MQ -> ES |
| 错误日志 | 异常和错误信息 | 异常捕获 -> LogBus -> MQ -> ES |
日志配置
- 日志总线:基于
xtools-boot-log封装,支持通过LogBus.init()链式调用记录日志 - 消息队列:使用 RabbitMQ 异步处理,并发度配置为 5-10
- 存储:日志存储到 Elasticsearch,通过
EsSysLogRepository和EsSysLogServiceImpl实现 - 日志追踪:使用
LogTrackHolder(基于 ScopedValue)实现日志链路追踪
3.3 代码生成设计
代码生成流程
flowchart TD
A[配置数据源] --> B[测试连接]
B --> C[同步数据库]
C --> D{读取表信息}
D --> E[获取表列表<br/>DatabaseMetaData]
E --> F[过滤排除表]
F --> G[生成表信息<br/>GenTable]
G --> H[获取字段信息<br/>DatabaseMetaData]
H --> I[处理字段类型<br/>类型映射,表单类型]
I --> J[生成字段信息<br/>GenTableColumn]
J --> K[保存到数据库]
K --> L{用户操作}
L -->|预览代码| M[Velocity渲染模板]
L -->|下载代码| N[Velocity渲染模板]
L -->|修改配置| O[保存表和字段配置]
M --> P[返回代码列表<br/>GenCodeDto]
N --> Q[打包ZIP下载]
模板引擎
- 使用 Apache Velocity 2.4.1 模板引擎
- 通过
GenProperties配置模板路径和生成参数 - 支持多种模板类型:Entity、Service、ServiceImpl、Mapper、Controller、Vue、TS API、SQL等
- 支持微服务 API 模块生成(可配置开关
openApi) - 支持字典数据、脱敏数据等高级配置
代码生成特性
| 特性 | 说明 |
|---|---|
| 多数据源 | 支持 MySQL 等多种数据库类型 |
| 表结构同步 | 自动读取表和字段元数据 |
| 智能类型映射 | 自动将数据库类型映射为 Java 类型 |
| 表单类型推断 | 根据字段类型自动推断表单组件 |
| 查询方式推断 | String类型默认LIKE,时间类型默认范围查询 |
| 模板配置 | 可配置后端和前端项目名称、模块路径等 |
| ZIP下载 | 生成的代码打包为ZIP文件下载 |
3.4 任务调度设计
任务实现
flowchart TD
A[任务触发] --> B[BaseJob.run]
B --> C[初始化日志追踪<br/>ScopedValue]
C --> D[获取Redis锁<br/>tryLock]
D --> E{获取锁成功?}
E -->|否| F[记录日志:已存在]
E -->|是| G[执行runJob方法]
G --> H{执行成功?}
H -->|异常| I[记录错误日志]
H -->|成功| J[记录成功日志]
I --> K[释放锁<br/>releaseLock]
J --> K
任务类型
| 类型 | 实现方式 | 说明 |
|---|---|---|
| 异步任务 | BaseJob implements Runnable |
支持分布式锁,防止重复执行 |
| XXL-JOB | xtools-boot-job-xxl(可选) |
分布式任务调度平台 |
| 定时任务 | SysScheduled |
Spring Task 定时任务管理 |
| Spring任务 | JobInterface.execute() |
Spring 原生任务执行接口 |
任务调度特性
- 分布式锁:使用 Redis
tryLock/releaseLock实现分布式锁,防止多实例重复执行 - 日志追踪:通过
ScopedValue(JDK 25特性)实现任务执行上下文传递 - 异常处理:任务执行异常自动记录错误日志
- 超时控制:支持自定义锁超时时间
3.5 缓存设计
缓存策略
| 缓存Key | 说明 | 过期时间 |
|---|---|---|
xtools-app:uid:{uid}:sm2 |
SM2公钥缓存 | 5分钟 |
xtools-app:uid:{uid}:captcha |
验证码缓存 | 60秒 |
xtools-app:auth:sys:user:{token} |
用户认证信息 | 1小时 |
xtools-app:auth:sys:uri |
权限URI缓存 | 永不过期 |
xtools-app:auth:cloud:token |
微服务Token | 60秒 |
xtools-app:mq:msg:err:{id} |
MQ消息错误次数 | 60秒 |
xtools-app:lock:job:{className} |
任务分布式锁 | 5分钟 |
xtools-app:risk:ip:{ip} |
风控IP | 永不过期 |
xtools-app:risk:uri:{uri} |
风控URI | 永不过期 |
xtools-app:sys:cache:param:{key} |
系统参数缓存 | 永不过期 |
xtools-app:sys:cache:jar:{name} |
JAR包缓存 | 永不过期 |
xtools-app:sys:cache:addr:{key} |
地址缓存 | 1小时 |
缓存架构
graph TD
A[应用层] --> B[AppCache<br/>缓存枚举]
B --> C[RedisService<br/>Redis操作服务]
subgraph Redis缓存
D1[认证缓存<br/>Token,用户信息]
D2[业务缓存<br/>参数,地址,JAR]
D3[风控缓存<br/>IP,URI限流]
D4[分布式锁<br/>任务锁]
D5[临时数据<br/>验证码,SM2密钥]
end
C --> D1
C --> D2
C --> D3
C --> D4
C --> D5
3.6 文件存储设计
项目支持多种文件存储方式(通过 xtools-app-standalone 可选配置):
| 存储方式 | 模块 | 说明 |
|---|---|---|
| S3存储 | xtools-boot-storage-s3 |
兼容S3协议的对象存储 |
| 本地文件 | xtools-boot-storage-file |
本地文件系统存储(可选) |
四、编码规范设计
4.1 命名规范
类命名
| 类型 | 命名规范 | 示例 |
|---|---|---|
| 实体类 | Sys + 模块名 |
SysUser、SysRole、SysMenu |
| 请求DTO | 模块名 + Req |
SysUserAddReq、SysUserPageReq |
| 响应DTO | 模块名 + Resp |
GenTableInfoResp |
| Excel DTO | 模块名 + Excel |
SysDictExcel |
| Service接口 | 模块名 + Service |
SysUserService |
| Service实现 | 模块名 + ServiceImpl |
SysUserServiceImpl |
| Base Service | 模块名 + BaseService |
SysUserBaseService |
| Controller | 模块名 + Controller |
SysUserController |
| Mapper | 模块名 + Mapper |
SysUserMapper |
| 转换器 | 模块名 + Convert |
SysUserConvert |
| 工具类 | 功能名 + Utils |
PasswdUtils、AuthUtils |
| 配置类 | 功能名 + Config 或 Properties |
SysConfig、GenProperties |
方法命名
| 操作 | 命名规范 | 示例 |
|---|---|---|
| 查询单个 | getXxx |
getUserInfo() |
| 分页查询 | pageXxx |
pageSysUser() |
| 新增 | addXxx / saveXxx |
addSysUser() |
| 修改 | updateXxx / editXxx |
editUserInfo() |
| 删除 | delXxx / deleteXxx |
delSysUser() |
| 统计 | countXxx |
— |
4.2 注释规范
类注释格式
/**
* <p>Title : 类名称</p>
* <p>Description : 类描述</p>
* <p>DevelopTools : Idea_x64_v2026.1</p>
* <p>DevelopSystem : macOS Sequoia 15.7.5</p>
* <p>Company : org.xujun</p>
*
* @author : XuJun
* @version : 1.0.0
* @date : 2026/1/31 21:18
*/
方法注释格式
/**
* 方法描述
*
* @param param 参数说明
* @return 返回值说明
*/
常量注释格式
/**
* 微服务标识
*/
private static final String CLOUD_FLAG = String.valueOf(Boolean.TRUE);
4.3 代码风格
- Lombok:使用
@RequiredArgsConstructor构造器注入,减少样板代码 - MapStruct:使用接口定义对象转换器,编译时自动生成实现
- MyBatis-Plus:继承
ServiceImpl和BaseMapper,简化CRUD操作 - 依赖注入:使用
@RequiredArgsConstructor+final字段(构造器注入)和@Resource(特殊场景) - 统一返回:使用
Result<T>统一响应格式 - 统一异常:使用
BizError(业务错误)和BizWarning(业务警告)异常类 - JDK特性:使用
ScopedValue、switch表达式、record等JDK 25特性 - 常量管理:通过
BaseParams接口提供通用常量(CP_NUM0、CP_NUM1等)
4.4 设计规范
- 分层原则:Controller -> Service -> Mapper 严格分层,禁止跨层调用
- 单一职责:每个模块负责单一业务领域
- 开闭原则:通过继承
BaseJob、BaseMessageHandle等基类扩展功能 - 接口隔离:Service接口与BaseService接口分离,基础CRUD与业务逻辑分离
4.5 安全规范
- 密码加密:使用 SM3 国密算法加密存储密码,SM2 非对称加密传输密码
- SQL安全:使用 MyBatis-Plus 参数化查询,防止SQL注入
- 数据验证:使用
@Valid注解进行请求参数验证 - 权限控制:基于 RBAC 模型的接口级别权限控制
- 数据脱敏:集成掩码机制(MaskIgnore),支持动态开关
五、项目依赖设计
5.1 核心框架依赖
| 依赖 | 版本 | 用途 |
|---|---|---|
| Spring Boot | 4.0.5 | 应用框架 |
| Spring Framework | 7.0.6 | 核心框架 |
| Spring Cloud | 2025.1.1 | 微服务框架 |
| Spring Cloud Alibaba | 2025.1.0.0 | 微服务组件 |
| Spring Data BOM | 2025.1.4 | 数据访问版本管理 |
| MyBatis-Plus | 3.5.16 | ORM增强工具 |
| MyBatis Spring Boot Starter | 4.0.1 | MyBatis集成 |
5.2 数据存储依赖
| 依赖 | 版本 | 用途 |
|---|---|---|
| Druid | 1.2.28 | 数据库连接池 |
| MySQL Connector/J | 9.6.0 | MySQL数据库驱动 |
| Elasticsearch Client | 9.2.6 | ES搜索引擎客户端 |
| Spring Data Redis | (Spring Boot管理) | Redis集成 |
| Lettuce | 6.8.2 | Redis客户端 |
| Spring AMQP | 4.0.2 | RabbitMQ集成 |
| RabbitMQ Client | 5.27.1 | RabbitMQ客户端 |
5.3 微服务相关依赖
| 依赖 | 版本 | 用途 |
|---|---|---|
| Nacos Client | 3.1.1 | 服务注册与配置中心 |
| Sentinel | 1.8.9 | 流量控制与熔断降级 |
| Seata | 2.5.0 | 分布式事务(可用) |
| RocketMQ | 5.3.1 | 消息队列(可用) |
5.4 工具库依赖
| 依赖 | 版本 | 用途 |
|---|---|---|
| Lombok | 1.18.44 | 代码简化 |
| MapStruct | 1.6.3 | 对象映射 |
| FastJSON2 | 2.0.60 | JSON处理 |
| Velocity | 2.4.1 | 模板引擎(代码生成) |
| Jackson | 2.21.2 | JSON序列化 |
| Commons Lang3 | 3.20.0 | 通用工具 |
| Commons IO | 2.21.0 | IO工具 |
| Commons Text | 1.15.0 | 文本处理 |
| Caffeine | 3.2.3 | 本地缓存 |
5.5 安全相关依赖
| 依赖 | 版本 | 用途 |
|---|---|---|
| BouncyCastle (bcprov-jdk18on) | 1.84 | 国密算法(SM2/SM3) |
| Easy Captcha | 1.6.2 | 验证码生成 |
| java-jwt | 4.5.1 | JWT令牌 |
5.6 文档相关依赖
| 依赖 | 版本 | 用途 |
|---|---|---|
| Knife4j | 4.5.0 | API文档增强 |
| SpringDoc OpenAPI | 3.0.3 | OpenAPI文档 |
| Swagger Annotations | 2.2.48 | API注解 |
5.7 系统监控依赖
| 依赖 | 版本 | 用途 |
|---|---|---|
| Spring Boot Admin | 4.0.3 | 应用监控 |
| OSHI Core | 6.11.1 | 系统信息采集 |
| Micrometer | 1.16.4 | 指标采集 |
5.8 文件处理依赖
| 依赖 | 版本 | 用途 |
|---|---|---|
| Fesod Sheet | 2.0.1-incubating | Excel处理 |
| PDFBox | 3.0.7 | PDF处理 |
| Thumbnailator | 0.4.21 | 图片压缩 |
| S3 SDK | 2.42.34 | S3对象存储客户端 |
5.9 其他工具依赖
| 依赖 | 版本 | 用途 |
|---|---|---|
| XXL-Job Core | 3.4.0 | 分布式任务调度 |
| IP2Region | 3.3.7 | IP归属地查询 |
| UserAgentUtils | 1.21 | 浏览器标识解析 |
| Pinyin4j | 2.5.1 | 拼音转换 |
| ZXing | 3.5.4 | 二维码/条形码 |
| JSoup | 1.22.1 | HTML解析 |
| MMSEG4J | 1.10.0 | 中文分词 |
5.10 xtools 内部框架依赖
| 依赖 | 版本 | 用途 |
|---|---|---|
| xtools-core | 5.0.0 | 核心工具库 |
| xtools-web | 5.0.0 | Web工具库 |
| xtools-extend | 5.0.0 | 扩展工具库 |
| xtools-api | 5.0.0 | API基础库 |
| xtools-boot-api | 5.0.0 | Boot API基础(Result、异常) |
| xtools-boot-core | 5.0.0 | Boot核心(Holder、工具) |
| xtools-boot-cache-redis | 5.0.0 | Redis缓存封装 |
| xtools-boot-db-mybatis-plus | 5.0.0 | MyBatis-Plus封装 |
| xtools-boot-elasticsearch | 5.0.0 | Elasticsearch封装 |
| xtools-boot-ip | 5.0.0 | IP工具封装 |
| xtools-boot-knife4j | 5.0.0 | Knife4j封装 |
| xtools-boot-log | 5.0.0 | 日志封装 |
| xtools-boot-mask | 5.0.0 | 数据脱敏封装 |
| xtools-boot-mq-base | 5.0.0 | 消息队列基础 |
| xtools-boot-mq-rabbit | 5.0.0 | RabbitMQ封装 |
| xtools-boot-storage-base | 5.0.0 | 存储基础 |
| xtools-boot-storage-file | 5.0.0 | 本地文件存储 |
| xtools-boot-storage-s3 | 5.0.0 | S3对象存储 |
| xtools-boot-task | 5.0.0 | 异步任务封装 |
| xtools-boot-thread | 5.0.0 | 线程池封装 |
| xtools-boot-web-base | 5.0.0 | Web基础 |
| xtools-boot-web-filter | 5.0.0 | Web过滤器基础 |
| xtools-boot-job-xxl | 5.0.0 | XXL-Job集成 |
| xtools-cloud-alibaba-nacos | 5.0.0 | Nacos集成 |
| xtools-cloud-alibaba-sentinel | 5.0.0 | Sentinel集成 |
| xtools-cloud-call | 5.0.0 | 微服务远程调用 |
六、技术选型说明
6.1 JDK 25
- 选择原因:采用最新LTS版本,充分利用JDK新特性提升开发效率和运行性能
- 主要特性:
- ScopedValue:用于任务执行的上下文传递(LogTrackHolder),替代ThreadLocal
- Virtual Threads(虚拟线程):轻量级线程,提升高并发处理能力
- Switch表达式:简化条件分支代码
- Record:用于不可变数据载体
- Pattern Matching:增强的模式匹配能力
- 性能优化:ZGC/Shenandoah垃圾回收器优化
6.2 Spring Boot 4.0.5
- Spring Framework版本:7.0.6
- 主要特性:
- 支持JDK 17+,完美适配JDK 25
- 响应式编程支持(WebFlux)
- 可观测性增强(Micrometer 1.16.4集成)
- 虚拟线程支持
- Jakarta EE 10+ 规范支持
- GraalVM Native Image 支持
6.3 MyBatis-Plus 3.5.16
- MyBatis版本:4.0.1
- 主要特性:
- 简化CRUD操作,通过
ServiceImpl和BaseMapper提供通用方法 - Lambda查询包装器,类型安全的条件构造
- 内置分页插件
- 代码生成器(本项目自研代码生成模块)
- 性能分析拦截器
- 简化CRUD操作,通过
6.4 Elasticsearch 9.2.6
- Spring Data BOM:2025.1.4
- 主要特性:
- 全文搜索引擎,用于日志存储和检索
- 高性能、分布式架构
- 支持近实时搜索
- 通过 Spring Data Elasticsearch 集成
6.5 Redis
- 客户端:Lettuce 6.8.2
- 主要特性:
- 高性能缓存,支持多种数据结构
- 分布式锁(tryLock/releaseLock)
- 认证信息缓存、权限缓存
- 会话管理、限流计数
6.6 RabbitMQ
- Spring AMQP:4.0.2
- RabbitMQ Client:5.27.1
- 主要特性:
- 可靠消息传递(消息确认机制)
- 灵活路由(Exchange + Queue + RoutingKey)
- 并发消费控制(concurrency配置)
- 错误处理和重试机制(MqErrorHandle)
6.7 Nacos 3.1.1
- 用途:服务注册与发现、配置中心
- 主要特性:
- 服务注册与发现
- 动态配置管理
- 服务健康检查
6.8 Sentinel 1.8.9
- 用途:流量控制与熔断降级
- 主要特性:
- 流量控制
- 熔断降级
- 系统保护
- 热点参数限流
6.9 其他重要依赖版本
| 依赖 | 版本 | 用途 |
|---|---|---|
| Spring Cloud Alibaba | 2025.1.0.0 | 微服务框架 |
| Nacos | 3.1.1 | 服务注册与配置中心 |
| Sentinel | 1.8.9 | 流量控制与熔断 |
| FastJSON2 | 2.0.60 | JSON序列化 |
| Lombok | 1.18.44 | 代码简化 |
| MapStruct | 1.6.3 | 对象映射 |
| Velocity | 2.4.1 | 模板引擎 |
| Knife4j | 4.5.0 | API文档增强 |
| BouncyCastle | 1.84 | 加密库 |
| OSHI | 6.11.1 | 系统监控 |
| Easy Captcha | 1.6.2 | 验证码生成 |
| Fesod Sheet | 2.0.1-incubating | Excel处理 |
| Jackson | 2.21.2 | JSON处理 |
| Druid | 1.2.28 | 数据库连接池 |
| Spring Boot Admin | 4.0.3 | 应用监控 |
| java-jwt | 4.5.1 | JWT令牌 |
| XXL-Job | 3.4.0 | 分布式任务调度 |
文档版本:v1.0 编写日期:2026-04-16 项目版本:1.0.0 父POM版本:xtools-parent-cloud:5.0.0 JDK版本:25 维护团队:xujun.org
Description
Languages
Java
99.8%
Dockerfile
0.2%