开源地址: https://gitee.com/jun-xtools/xtools-boot.git
一、功能和用途
1.1 项目概述
项目信息
描述
项目名称
xtools-boot
项目版本
5.0.0
父POM
xtools-parent-boot:5.0.0
顶级父POM
xtools-parent:5.0.0
Spring Boot
4.0.6
JDK版本
25
项目定位
SpringBoot工具模块框架,为业务应用提供开箱即用的基础能力
维护团队
org.xujun
1.2 技术特点
采用最新的 JDK 25 版本,充分利用虚拟线程(Virtual Threads)、ScopedValue等新特性
基于 Spring Boot 4.0.6 构建,支持自动配置和快速开发
使用 MyBatis-Plus 3.5.16 简化数据访问层开发
使用 MyBatis 4.0.1 提供灵活的SQL映射能力
使用 Druid 1.2.28 数据库连接池,内置SQL监控
集成 Elasticsearch 9.2.8 实现日志存储和检索
支持 Knife4j 4.5.0 自动生成 API 文档
集成 Spring AMQP 4.0.3 实现 RabbitMQ 异步消息处理
集成 Spring Data Redis 实现分布式缓存
集成 XXL-JOB 3.4.0 实现分布式任务调度
集成 Spring Boot Admin 4.0.4 实现应用监控
使用 Jackson 3.1.2 进行 JSON 序列化/反序列化
使用 FastJSON2 2.0.60 处理JSON数据
使用 Lombok 1.18.46 简化Java代码
使用 MapStruct 1.6.3 进行对象映射转换
支持 S3 2.42.41 对象存储
使用 ip2region 3.3.7 实现IP地址定位
1.3 核心功能
1.4 功能层次结构
xtools-boot SpringBoot工具模块框架
1.5 功能关系图
二、项目结构设计
2.1 整体架构
xtools-boot-elasticsearch 搜索引擎模块
xtools-boot-knife4j API文档模块
xtools-boot-cache-redis Redis缓存
xtools-boot-db-mybatis MyBatis
xtools-boot-db-mybatis-plus MyBatis-Plus
xtools-boot-job-xxl XXL-JOB
xtools-boot-mq-rabbit RabbitMQ
xtools-boot-storage-base 存储基础
xtools-boot-storage-file 文件存储
xtools-boot-storage-s3 S3存储
xtools-boot-web-base Web基础
xtools-boot-web-filter 过滤器
2.2 分层架构
LogTrackFilter 日志追踪过滤器 Order:100
CommonFilter 公共过滤器 Order:101
GlobalControllerExceptionHandler 全局异常处理
MvcConverterConfig MVC转换器配置
2.3 模块职责
模块
职责
关键类
xtools-boot-api
API基础定义:统一响应、异常体系、枚举、日志追踪模型、分页/树形模型
Result, BizError, LogTrack, PageReq, PageResp, TreeResp
xtools-boot-core
核心工具集:Spring上下文、路径匹配、枚举工具、时间工具、树形工具、JAR工具
SpringContextUtils, PathPatternUtils, TreeUtils, TimeUtils
xtools-boot-cache
Redis缓存服务:数据缓存、分布式锁、Hash操作、缓存监控
RedisService, RedisUtils, RedisMonitor
xtools-boot-db
数据库访问:MyBatis配置、MyBatis-Plus增强、Druid连接池、SQL监控、MySQL监控
BootDbMybatisConfiguration, BootDbMybatisPlusConfiguration, MySqlMonitor
xtools-boot-elasticsearch
搜索引擎:ES查询构建、ES操作、ES监控
EsUtils, EsQueryUtils, ElasticsearchMonitor
xtools-boot-ip
IP地址工具:IP库初始化、IP地址查询和定位
IpUtils, InitIp
xtools-boot-job
任务调度:XXL-JOB配置和初始化
XxlJobConfig, InitXxlJob
xtools-boot-knife4j
API文档:Knife4j集成和白名单配置
BootKnife4jConfiguration, Knife4jFilterWhitelist
xtools-boot-log
日志总线:日志采集、格式化、异步持久化、日志追踪
LogBus, LogTrackHolder, LogBody, RunInfo
xtools-boot-mask
数据脱敏:字段级脱敏注解、多种脱敏类型、自定义脱敏
@Mask, MaskSerializer, MaskType, DefaultMaskHandle
xtools-boot-mq
消息队列:消息总线、RabbitMQ实现、消息编解码、错误处理
MqBus, RabbitMqHandle, BaseMessageHandle, MqMessageUtils
xtools-boot-storage
存储抽象:统一存储接口、本地文件实现、S3实现
StorageService, StorageServiceFileImpl, StorageServiceS3Impl
xtools-boot-task
任务总线:任务状态管理、任务信息持久化
TaskBus, TaskInfo, TaskStatus
xtools-boot-thread
线程工具:虚拟线程执行、异步回调
VirtualThreadTaskUtils, VirtualThreadTaskCallback
xtools-boot-web
Web基础:全局异常处理、日志追踪Filter、Jackson定制、XSS过滤、过滤器链
GlobalControllerExceptionHandler, LogTrackFilter, CommonFilter
2.4 包结构设计
xtools.boot.{module }
├── {Module }Configuration
├── selector
│ └── {Module }ImportSelector
├── config
├── constant
├── enums
├── interfaces
│ ├── BusInterface
│ └── BaseType
├── model
│ └── dto
├── utils
├── handle
├── filter
├── init
├── monitor
├── holder
├── service
└── annotation
2.5 模块自动装配设计
所有模块采用统一的自动装配模式:
模块Configuration类 @Configuration
ImportSelector 通过 @Import导入
扫描模块包路径 registerBeanDefinitions
注册模块内所有Component Configuration / Utils / Monitor等
设计原则 :
每个模块通过 @Configuration + @Import(ImportSelector) 实现按需加载
ImportSelector 指定模块的根包路径,自动注册所有 @Component、@Configuration 等注解的类
业务应用只需引入对应模块的 Maven 依赖,无需手动配置
三、项目功能设计
3.1 统一响应与异常设计
统一响应模型
public final class Result <T> {
private boolean success;
private int code;
private Object msg;
private T data;
}
异常体系
CommonException xtools-core
返回Result.success=true code=业务码
返回ResultType.UNAUTHORIZED
全局异常处理流程
MethodArgumentTypeMismatchException
HandlerMethodValidationException
MethodArgumentNotValidException
HttpMessageNotReadableException
HttpRequestMethodNotSupportedException
返回 405 METHOD_NOT_ALLOWED
返回 500 INTERNAL_SERVER_ERROR
3.2 日志管理设计
日志总线架构
日志追踪设计
日志类型枚举
日志类型
说明
OTHER
其他
VIRTUAL_THREAD
虚拟线程
REDIS
Redis操作
MYBATIS
MyBatis操作
MQ
消息队列
ELASTICSEARCH
Elasticsearch操作
SENTINEL
Sentinel操作
STORAGE
存储操作
OPT_LOG
操作日志
HTTP
HTTP操作
HTTP_REQUEST
HTTP请求
HTTP_RESPONSE
HTTP响应
CLOUD_REQUEST
云端请求
CLOUD_RESPONSE
云端响应
CONTROLLER
Controller异常
TASK
任务操作
JOB
定时任务
RISK
风险操作
3.3 缓存设计
Redis服务架构
String操作 set / get / del / incr
Key操作 expire / persist / rename getByPattern / getKey
分布式锁 tryLock / releaseLock Lua脚本保证原子性
Hash操作 hashPut / hashGet hashEntries / hashDelete hashExists
FastJSON2序列化 String直接存储 Object序列化为JSON
3.4 消息队列设计
消息总线架构
消息反序列化 MqMessageUtils.from
BaseMessageHandle baseHandleMessage
消息初始化流程
InitMq ApplicationRunner Order:50
3.5 存储设计
存储抽象架构
StorageServiceFileImpl 本地文件存储
StorageServiceS3Impl S3对象存储
S3StorageConfig S3配置+S3Client
StorageService接口方法 :
方法
说明
exists(String key)
判断文件是否存在
save(String key, InputStream data)
保存文件
get(String key)
获取文件输入流
del(String key)
删除文件
3.6 数据脱敏设计
脱敏注解
身份证脱敏 110101199001011234 -> 110101****1234
手机号脱敏 13812345678 -> 138****5678
邮箱脱敏 test @example.com -> t***@example.com
3.7 过滤器链设计
绑定CommonHolder 到ScopedValue
3.8 任务总线设计
TaskBus.init code / type / status
任务状态枚举 :
状态
值
说明
ING
0
进行中
SUCCESS
1
成功
ERROR
2
失败
3.9 虚拟线程设计
VirtualThreadTaskCallback onSuccess / onError
四、编码规范设计
4.1 命名规范
类命名
类型
命名规范
示例
配置类
Boot{Module}Configuration
BootCacheRedisConfiguration
导入选择器
Boot{Module}ImportSelector
BootCacheRedisImportSelector
配置属性
{功能}Config
LogBusConfig, StorageConfig
工具类
{功能}Utils
RedisUtils, TreeUtils, TimeUtils
监控类
{组件}Monitor
RedisMonitor, MySqlMonitor
枚举类
{功能}Enums / {功能}Enum
MySqlMonitorEnums, MaskType
异常类
Biz{类型}Error
BizError, BizWarning, BizPublicKeyError
接口
{功能}Interface / Base{功能}
LogBusInterface, BaseTaskType
DTO
{功能}Dto / {功能}
Result, LogBody, TaskInfo, RunInfo
总线
{功能}Bus
LogBus, TaskBus, MqBus
初始化
Init{功能}
InitIp, InitMq, InitXxlJob
处理器
{功能}Handle / {功能}Handler
RabbitMqHandle, DefaultMaskHandle
持有器
{功能}Holder
LogTrackHolder, CommonHolder
注解
{功能}
@Mask, @IgnoreXss
方法命名
操作
前缀
示例
初始化
init
LogBus.init(), TaskBus.init()
保存
save
logBus.save(), taskBus.save()
获取
get
RedisService.get(), hashGet()
删除
del
RedisService.del(), hashDelete()
判断
is/has/exists
hashExists()
格式化
fmt
fmtLog(), fmtStackTrace()
执行
do
doSave()
4.2 注释规范
类注释格式
方法注释格式
4.3 代码风格
Lombok简化代码 :使用 @Data、@Slf4j、@Resource 等注解减少样板代码
构造器注入 :通过 @Resource 进行依赖注入
统一返回格式 :所有Controller方法返回 Result<T>
统一异常处理 :通过 @RestControllerAdvice 全局捕获异常
ScopedValue :使用JDK 21的ScopedValue替代ThreadLocal,用于线程间上下文传递
虚拟线程 :日志保存、消息处理等使用虚拟线程异步执行
链式调用 :LogBus、TaskBus、MqBus支持链式API调用
接口驱动 :LogBusInterface、TaskBusInterface、BaseMqHandle、StorageService均通过接口定义,业务层实现
4.4 设计规范
单一职责 :每个模块专注单一功能领域(缓存、日志、消息队列等)
开闭原则 :通过接口(LogBusInterface、TaskBusInterface、BaseMqHandle)支持扩展,无需修改框架代码
依赖倒置 :高层模块通过接口依赖低层实现,如StorageService接口抽象文件存储和S3存储
按需加载 :通过ImportSelector实现模块按需自动装配,引入依赖即生效
总线模式 :LogBus、TaskBus、MqBus统一采用总线模式,通过Spring容器获取所有接口实现
4.5 安全规范
XSS防护 :@IgnoreXss 注解标记不需要XSS过滤的字段,Jackson的String反序列化器自动过滤XSS
数据脱敏 :@Mask 注解在JSON序列化阶段自动脱敏敏感数据
SQL监控 :MyBatis拦截器记录慢查询和SQL日志
参数验证 :使用 @Valid 注解进行参数校验,全局异常处理器统一处理校验失败
五、项目依赖设计
5.1 核心框架依赖
依赖
版本
用途
Spring Boot
4.0.6
应用框架
Spring Framework
7.0.7
核心框架
Spring AMQP
4.0.3
RabbitMQ集成
Spring Data BOM
2025.1.5
Spring Data版本管理
Jakarta Servlet
6.1.0
Servlet规范
5.2 数据访问依赖
依赖
版本
用途
MyBatis
4.0.1
ORM框架
MyBatis-Plus
3.5.16
ORM增强工具
Druid
1.2.28
数据库连接池
MySQL Connector
9.7.0
MySQL驱动
Elasticsearch Client
9.2.8
Elasticsearch客户端
5.3 工具库依赖
依赖
版本
用途
Lombok
1.18.46
代码简化
MapStruct
1.6.3
对象映射
FastJSON2
2.0.60
JSON处理
Jackson
3.1.2
JSON序列化/反序列化
Commons Lang3
3.20.0
通用工具
Commons IO
2.22.0
IO工具
Commons Text
1.15.0
文本处理
5.4 扩展工具依赖
依赖
版本
用途
BouncyCastle
1.84
加密库
OSHI
6.12.0
系统监控
ip2region
3.3.7
IP地址定位
java-jwt
4.5.1
JWT令牌
Caffeine
3.2.3
本地缓存
AWS S3 SDK
2.42.41
S3对象存储
5.5 办公工具依赖
依赖
版本
用途
Fesod Sheet
2.0.1-incubating
Excel处理
PDFBox
3.0.7
PDF处理
5.6 文档相关依赖
依赖
版本
用途
Knife4j
4.5.0
API文档增强
Swagger Annotations
2.2.48
OpenAPI注解
SpringDoc OpenAPI
3.0.3
OpenAPI文档生成
5.7 任务调度依赖
依赖
版本
用途
XXL-JOB
3.4.0
分布式任务调度
5.8 监控依赖
依赖
版本
用途
Spring Boot Admin
4.0.4
应用监控
5.9 其他工具依赖
依赖
版本
用途
Velocity
2.4.1
模板引擎
Easy Captcha
1.6.2
验证码生成
Jsoup
1.22.2
HTML解析
UserAgentUtils
1.21
浏览器标识解析
Pinyin4j
2.5.1
拼音转换
Thumbnailator
0.4.21
图片压缩
ZXing
3.5.4
二维码/条形码
mmseg4j
1.10.0
中文分词
5.10 POM继承链
spring-boot-starter-parent 4.0.6
六、技术选型说明
6.1 JDK 25
LTS版本 :JDK 25是长期支持版本,提供长期稳定的安全更新
虚拟线程(Virtual Threads) :项目大量使用虚拟线程进行异步操作,如日志保存、消息处理,大幅简化并发编程
ScopedValue :替代传统的ThreadLocal,用于线程间上下文传递(LogTrack、CommonHolder),性能更优且更安全
Record模式匹配 :枚举类型使用record定义,支持简洁的模式匹配语法
Switch表达式 :全局异常处理器等场景使用增强的switch表达式
文本块和String模板 :日志格式化等场景使用文本块提升可读性
6.2 Spring Boot 4.0.6
Spring Framework版本 :7.0.7,提供最新的核心功能
Jakarta EE 11 :全面支持Jakarta EE 11规范(Jakarta Servlet 6.1.0)
自动配置 :所有模块基于Spring Boot自动配置机制,引入依赖即生效
Actuator :内置应用监控端点
嵌入式容器 :Tomcat 11.0.21
6.3 MyBatis-Plus 3.5.16
简化CRUD :通过BaseMapper提供通用增删改查
分页插件 :内置分页拦截器,配合QueryUtils实现分页查询
代码生成 :配合xtools-app-gen模块实现代码生成
SQL解析 :通过mybatis-plus-jsqlparser支持SQL解析和优化
支持MyBatis版本 :4.0.1
6.4 Elasticsearch 9.2.8
Spring Data Elasticsearch :通过Spring Data BOM 2025.1.5管理
全文搜索 :用于日志检索和全文查询
高性能 :基于Lucene的分布式搜索引擎
EsUtils :封装ES的GET/POST操作
EsQueryUtils :封装常用查询条件(matchPhrase、wildcard、timeRange)
6.5 Redis
Spring Data Redis :通过Spring Boot 4.0.6管理(Lettuce 6.8.2客户端)
RedisService :封装String、Hash、分布式锁等操作
FastJSON2序列化 :使用FastJSON2进行Redis值的序列化/反序列化
分布式锁 :基于RedisTemplate的setIfAbsent + Lua脚本实现
6.6 RabbitMQ
Spring AMQP :4.0.3版本,提供RabbitMQ集成
RabbitMQ Client :5.27.1版本
消息总线 :通过MqBus统一消息推送接口
消息编解码 :MqMessageUtils提供消息的打包/解包
6.7 其他重要技术选型
技术
版本
选型原因
Jackson
3.1.2
Spring Boot默认JSON库(tools.jackson包),用于HTTP响应序列化
FastJSON2
2.0.60
高性能JSON库,用于Redis序列化和内部数据处理
Knife4j
4.5.0
增强Swagger UI,提供更友好的API文档界面
XXL-JOB
3.4.0
轻量级分布式任务调度平台
Druid
1.2.28
阿里巴巴数据库连接池,内置SQL监控和防火墙
ip2region
3.3.7
离线IP地址定位库,无需网络请求
BouncyCastle
1.84
Java加密扩展库,支持SM2/SM3等国密算法
OSHI
6.12.0
跨平台系统信息监控库
S3 SDK
2.42.41
AWS官方S3客户端,支持所有S3兼容存储
Spring Boot Admin
4.0.4
开源应用监控管理平台
文档版本 :v1.0
编写日期 :2026-06-09
项目版本 :5.0.0
父POM版本 :xtools-parent-boot:5.0.0
顶级父POM :xtools-parent:5.0.0
JDK版本 :25
维护团队 :xujun.org