开源地址: https://gitee.com/jun-xtools/xtools.git
一、功能和用途
1.1 项目概述
xtools (低调大师工具箱)是一个基于 JDK 25 的 Java 工具库项目,为 Java 应用开发提供通用的工具方法和基础组件支持。
项目信息
说明
项目名称
xtools
项目版本
5.0.0
父POM
xtools-parent:5.0.0
JDK版本
25
项目定位
通用Java工具库,提供加密、时间、系统、网络、文档等工具方法
维护团队
org.xujun
1.2 技术特点
采用最新的 JDK 25 版本,充分利用新特性(Record类型、文本块、模式匹配等)
基于 JUnit Jupiter 6.0.3 构建单元测试体系
使用 Lombok 1.18.44 简化代码编写
集成 FastJSON2 2.0.60 实现高性能JSON处理
使用 BouncyCastle 1.84 提供国密算法(SM2/SM3/SM4)支持
集成 Google ZXing 3.5.4 实现二维码和条形码生成与解析
使用 Apache PDFBox 3.0.7 实现PDF文档处理
使用 Apache Fesod Sheet 2.0.1-incubating 处理Excel文件
集成 mmseg4j-core 1.10.0 实现中文分词
支持 AWS S3 SDK 2.42.34 实现对象存储
集成 ip2region 3.3.7 实现离线IP地址定位
使用 java-jwt 4.5.1 实现JWT令牌生成与验证
集成 OSHI 6.11.1 实现系统信息采集
使用 Apache Velocity 2.4.1 实现模板引擎功能
集成 Jsoup 1.22.1 实现HTML解析和爬虫功能
使用 MapStruct 1.6.3 实现对象映射
基于 Jakarta Servlet API 6.1.0 提供Web层支持
1.3 核心功能
时间工具 Date/LocalDateTime Instant/Timestamp/Calendar
异常处理体系 BaseError/BaseErrorModule CommonException
1.4 功能层次结构
1.5 功能关系图
二、项目结构设计
2.1 整体架构
2.2 模块依赖关系
xtools-core 第3层:依赖test+base
xtools-extend 第4层:依赖test+core
xtools-api 第4层:依赖test+core
2.3 模块职责
模块
职责
依赖
xtools-test
测试基础设施,提供BaseTest基类
JUnit Jupiter 6.0.3
xtools-base
基础定义,异常体系、常量、错误模块枚举
xtools-test
xtools-core
核心工具集,加密、时间、系统、图像、线程等
xtools-test, xtools-base
xtools-extend
扩展工具集,国密、JSON、JWT、条码、文档等
xtools-test, xtools-core
xtools-web
Web层工具,XSS过滤、Session管理
xtools-core
xtools-api
第三方API集成,阿里云邮件、百度地图
xtools-test, xtools-core
2.4 包结构设计
xtools
├── xtools-base(基础模块)
│ └── xtools.base
│ ├── exception
│ │ ├── BaseError
│ │ ├── BaseErrorModule
│ │ ├── CommonException
│ │ └── ExceptionUtils
│ ├── config
│ │ └── BaseParams
│ └── enums
│ ├── ErrorModule
│ ├── BaseErrorModule
│ └── TestError
│
├── xtools-core(核心工具模块)
│ └── xtools.core
│ ├── encrypt
│ │ ├── BaseEncryptUtils
│ │ ├── Base64Utils
│ │ ├── Md5Utils
│ │ └── Sha1Utils
│ ├── time
│ │ ├── DateUtils
│ │ ├── LocalDateTimeUtils
│ │ ├── InstantUtils
│ │ ├── TimestampUtils
│ │ └── CalendarUtils
│ ├── sys
│ │ ├── OsUtils
│ │ ├── BrowserUtils
│ │ ├── CmdUtils
│ │ └── SysBaseInfoUtils
│ ├── extend
│ │ ├── TemplateUtils
│ │ ├── PagingUtils
│ │ ├── UrlUtils
│ │ ├── DistanceUtils
│ │ ├── RandomUtils
│ │ ├── HtmlUtils
│ │ ├── ExecTimeUtils
│ │ ├── ClassScanner
│ │ ├── CheckUtils
│ │ └── ArithmeticUtils
│ ├── img
│ │ └── BufferedImageUtils
│ ├── thread
│ │ ├── ToolThreadFactory
│ │ └── TimeoutUtils
│ ├── log
│ │ └── LogUtils
│ ├── sensitive
│ │ └── SensitiveWordUtils
│ ├── dto
│ │ ├── FileInfo
│ │ ├── RsaDto
│ │ └── SysBaseInfoDto
│ ├── enums
│ │ ├── CoreError
│ │ ├── RegexEnum
│ │ ├── TimePattern
│ │ ├── LogLevel
│ │ └── OsEnum
│ ├── ArrUtils
│ ├── BytesUtils
│ ├── HexUtils
│ ├── CollectionUtils
│ ├── UuidUtils
│ └── DtoConversionUtils
│
├── xtools-extend (扩展工具模块)
│ └── xtools.extend
│ ├── encrypt
│ │ ├── Sm2Utils
│ │ ├── Sm3Utils
│ │ ├── Sm4Utils
│ │ └── PkcsUtils
│ ├── office
│ │ ├── PdfUtils
│ │ ├── WordUtils
│ │ ├── ExcelUtils
│ │ └── PptUtils
│ ├── dto
│ │ └── CryptoDto
│ ├── enums
│ │ └── ExtendError
│ ├── JsonUtils
│ ├── JwtUtils
│ ├── CodeUtils
│ ├── AnalyzerUtils
│ ├── UserAgentUtils
│ └── office
│
├── xtools-web(Web 工具模块)
│ └── xtools.web
│ ├── xss
│ │ ├── XssFilter
│ │ ├── XssWrapper
│ │ └── XssUtils
│ ├── enums
│ │ ├── WebError
│ │ └── HeaderEnum
│ └── SessionUtils
│
├── xtools-api(API 集成模块)
│ └── xtools.api
│ ├── ali
│ │ └── AliEmailUtils
│ ├── baidu
│ │ ├── LocationUtils
│ │ └── WeatherUtils
│ ├── dto
│ │ ├── IpAddrDto
│ │ ├── LocationDto
│ │ └── LatAndLngDto
│ ├── enums
│ │ └── ApiError
│ ├── utils
│ │ └── ReqLogUtils
│ └── config
│ └── TestApiConfig
│
└── xtools-test(测试模块)
└── xtools.test
└── BaseTest
三、项目功能设计
3.1 异常处理体系设计
3.1.1 异常体系架构
CoreError 核心错误码 98001-99999
ApiError API错误码 95001-95011
3.1.2 异常处理流程
CommonException.create ErrorEnum, cause, params
格式化错误消息 module:type-code + msg
3.1.3 错误码规范
模块
错误码范围
枚举类
示例
xtools-core
98001-99999
CoreError
ENCRYPT(98201)
xtools-api
95001-95011
ApiError
ALI(95001), BAIDU(95011)
xtools-web
Web模块范围
WebError
-
xtools-extend
Extend模块范围
ExtendError
-
3.2 加密工具设计
3.2.1 加密体系架构
3.2.2 加密工具功能
工具类
所属模块
功能描述
BaseEncryptUtils
xtools-core
加密基础类,提供MessageDigest、密钥生成、Cipher创建等底层方法(protected)
Base64Utils
xtools-core
Base64编解码
Md5Utils
xtools-core
MD5消息摘要
Sha1Utils
xtools-core
SHA1消息摘要
Sm2Utils
xtools-extend
SM2非对称加密/解密,基于BouncyCastle
Sm3Utils
xtools-extend
SM3哈希算法,国密摘要
Sm4Utils
xtools-extend
SM4对称加密/解密,国密分组密码
PkcsUtils
xtools-extend
PKCS#7填充方案
3.3 时间工具设计
LocalDateTimeUtils java.time.LocalDateTime
InstantUtils java.time.Instant
TimestampUtils java.sql.Timestamp
CalendarUtils java.util.Calendar
TimePattern枚举 YMDHMS/YMD/YM等
3.4 系统工具设计
3.5 扩展工具设计
DistanceUtils 距离计算 Haversine公式
3.6 敏感词过滤设计
返回结果 Result has=true, words
返回结果 Result has=false, words
3.7 XSS防护设计
3.8 文档处理设计
3.9 API集成设计
3.10 测试体系设计
flowchart TD
A[BaseTest<br/>抽象测试基类] --> B[@Test runTest]
B --> C[打印测试标题<br/>title方法]
C --> D[记录开始时间]
D --> E[调用 doTest<br/>模板方法]
E --> F[记录结束时间]
F --> G[输出耗时]
G --> H[测试完成]
I[具体测试类] -->|继承| A
I --> J[实现 doTest<br/>编写测试逻辑]
四、编码规范设计
4.1 命名规范
4.1.1 类命名
类型
命名规则
示例
工具类
XxxUtils
DateUtils、Sm2Utils、JsonUtils
数据传输对象
XxxDto
FileInfo、RsaDto、LocationDto
错误枚举
XxxError
CoreError、ApiError、WebError
通用枚举
XxxEnum
RegexEnum、TimePattern、OsEnum
异常类
XxxException
CommonException
接口
BaseXxx / Xxx
BaseError、BaseParams、BaseErrorModule
过滤器
XxxFilter
XssFilter
包装器
XxxWrapper
XssWrapper
配置类
XxxConfig
TestApiConfig
测试基类
BaseTest
BaseTest
4.1.2 方法命名
操作
命名规则
示例
获取值
getXxx / xxx
getLocalIp()、pattern()
判断
isXxx / hasXxx
isEmpty()、isJson()
转换
toXxx / fromXxx
toStr()、from(long)
生成
newXxx / getXxx
newQrCode()、getKey()
加密
encrypt / decrypt
encrypt(publicKey, data)
替换
replace / format
replace(template, values)
执行
run / execute
run()、send(...)
校验
check / isValid
check(text)、isValid(input)
4.1.3 常量命名
类型
命名规则
示例
基础常量
CP_ 前缀
CP_EMPTY、CP_LINE、CP_NUM0
算法常量
UPPER_SNAKE
ALGORITHM_NAME
URL常量
UPPER_SNAKE
ALIYUN_URL
枚举字段
final 字段
pattern、regex、code
4.2 注释规范
4.2.1 类注释格式
4.2.2 方法注释格式
4.3 代码风格
4.3.1 设计模式
设计模式
应用场景
示例
静态工具类
所有Utils类
DateUtils、Sm2Utils、JsonUtils
静态工厂方法
异常创建
CommonException.create(CoreError.ENCRYPT, cause)
模板方法
测试基类
BaseTest.runTest() 调用 doTest()
Fluent Builder
命令行执行
CmdUtils.init(cmd).setRunDir(dir).run()
工厂方法
线程创建
ToolThreadFactory 实现 ThreadFactory
接口契约
错误体系
BaseError、BaseErrorModule 接口
4.3.2 异常处理规范
所有checked exception通过CommonException.create()包装为unchecked exception
异常消息格式:[module:type-code]formatted message
使用{}作为消息模板占位符
4.3.3 序列化规范
大多数工具类实现Serializable接口
使用@Serial注解标注serialVersionUID
4.3.4 代码结构
4空格缩进
左大括号同行
方法间空行分隔
使用implements声明接口实现
4.4 设计规范
4.4.1 分层原则
xtools-test :零外部依赖,仅依赖JUnit
xtools-base :基础定义层,不依赖任何业务逻辑
xtools-core :核心工具层,依赖base
xtools-extend :扩展工具层,依赖core
xtools-web :Web专用工具,依赖core
xtools-api :API集成层,依赖core
4.4.2 单一职责
每个Utils类只负责一个功能领域
加密工具按算法类型分离(Base64、MD5、SHA1、SM2、SM3、SM4)
时间工具按Java时间API类型分离
4.4.3 开闭原则
BaseEncryptUtils提供protected基础方法,子类可扩展
BaseError接口定义错误契约,各模块独立实现错误枚举
ClassScanner支持Predicate<Class<?>>灵活过滤
五、项目依赖设计
5.1 基础依赖
依赖
版本
用途
使用模块
JUnit Jupiter
6.0.3
单元测试框架
xtools-test
Lombok
1.18.44
代码简化(注解处理)
全模块
FastJSON2
2.0.60
JSON序列化/反序列化
xtools-extend, xtools-web, xtools-api
5.2 Apache Commons依赖
依赖
版本
用途
使用模块
Commons IO
2.21.0
IO操作工具
xtools-core
Commons Lang3
3.20.0
通用工具方法
xtools-web
Commons Text
1.15.0
文本处理
xtools-web
5.3 加密与安全依赖
依赖
版本
用途
使用模块
BouncyCastle (bcprov-jdk18on)
1.84
加密库,支持国密算法
xtools-extend
java-jwt
4.5.1
JWT令牌生成与验证
xtools-extend
5.4 系统与网络依赖
依赖
版本
用途
使用模块
OSHI (oshi-core)
6.11.1
系统信息采集
xtools-extend
ip2region
3.3.7
离线IP地址定位
xtools-extend
UserAgentUtils
1.21
浏览器User-Agent解析
xtools-extend
AWS S3 SDK
2.42.34
对象存储客户端
xtools-extend
5.5 文档处理依赖
依赖
版本
用途
使用模块
Apache PDFBox
3.0.7
PDF文档处理
xtools-extend
Apache Fesod Sheet
2.0.1-incubating
Excel文件处理
xtools-extend
5.6 媒体与编码依赖
依赖
版本
用途
使用模块
Google ZXing (javase)
3.5.4
二维码/条形码生成与解析
xtools-extend
Thumbnailator
0.4.21
图片压缩
xtools-extend
mmseg4j-core
1.10.0
中文分词
xtools-extend
Pinyin4j
2.5.1
汉字转拼音
xtools-extend
5.7 工具库依赖
依赖
版本
用途
使用模块
MapStruct
1.6.3
对象映射
全模块
Apache Velocity
2.4.1
模板引擎
全模块
Jsoup
1.22.1
HTML解析和爬虫
xtools-api
Easy Captcha
1.6.2
验证码生成
xtools-api
Caffeine
3.2.3
本地高性能缓存
全模块
5.8 Web依赖
依赖
版本
用途
使用模块
Jakarta Servlet API
6.1.0
Servlet规范API
xtools-web
5.9 Maven构建插件
插件
版本
用途
Maven Compiler Plugin
3.15.0
Java源码编译
Maven Source Plugin
3.4.0
源码JAR打包
JaCoCo Maven Plugin
0.8.14
单元测试覆盖率报告
模块
版本
描述
xtools
5.0.0
父模块,聚合子模块
xtools-parent
5.0.0
父POM,统一依赖管理
xtools-test
5.0.0
测试基础设施模块
xtools-base
5.0.0
基础定义模块
xtools-core
5.0.0
核心工具模块
xtools-extend
5.0.0
扩展工具模块
xtools-web
5.0.0
Web工具模块
xtools-api
5.0.0
API集成模块
六、技术选型说明
6.1 JDK 25
选择原因 :使用最新JDK版本,充分利用现代Java特性
主要特性 :
Record类型(用于SensitiveWordUtils.Result等数据载体)
文本块(Text Blocks)简化多行字符串
模式匹配(Pattern Matching)增强类型判断
密封类(Sealed Classes)增强类型安全
虚拟线程(Virtual Threads)提升并发性能
改进的垃圾回收器(ZGC/Shenandoah)
6.2 JUnit Jupiter 6.0.3
选择原因 :业界标准的Java单元测试框架
主要特性 :
支持@Test、@DisplayName等注解
支持参数化测试、嵌套测试
强大的断言和假设机制
与BaseTest模板方法模式结合,统一测试输出格式
6.3 BouncyCastle 1.84
选择原因 :Java平台最全面的加密库,支持国密算法
主要特性 :
支持SM2(非对称加密)、SM3(哈希)、SM4(对称加密)等国密算法
提供PKCS填充方案
纯Java实现,无本地依赖
6.4 FastJSON2 2.0.60
选择原因 :高性能JSON处理库
主要特性 :
高性能序列化/反序列化
支持JSONPath查询
支持JSON模板替换({{key}}占位符)
支持Base64编码的JSON
6.5 Google ZXing 3.5.4
选择原因 :业界标准的条码处理库
主要特性 :
支持QR二维码生成与解析
支持多种条形码格式
支持logo嵌入二维码
6.6 Apache PDFBox 3.0.7
选择原因 :纯Java的PDF处理库
主要特性 :
PDF转图片(144 DPI)
支持PDF文本提取
无外部依赖
6.7 其他重要依赖版本
依赖
版本
用途
选择原因
Lombok
1.18.44
代码简化
减少样板代码,提高开发效率
MapStruct
1.6.3
对象映射
编译期代码生成,高性能
Apache Velocity
2.4.1
模板引擎
灵活的文本模板替换
Jsoup
1.22.1
HTML解析
jQuery风格的DOM操作API
OSHI
6.11.1
系统监控
跨平台系统信息采集
ip2region
3.3.7
IP定位
离线IP地址查询,无需网络请求
Caffeine
3.2.3
本地缓存
高性能本地缓存库
Thumbnailator
0.4.21
图片压缩
简洁的图片处理API
mmseg4j-core
1.10.0
中文分词
MMSeg中文分词算法
Pinyin4j
2.5.1
拼音转换
汉字转拼音工具
Easy Captcha
1.6.2
验证码
多种验证码样式
AWS S3 SDK
2.42.34
对象存储
S3协议兼容存储
java-jwt
4.5.1
JWT令牌
JWT生成与验证
UserAgentUtils
1.21
UA解析
浏览器标识解析
Jakarta Servlet API
6.1.0
Servlet规范
Jakarta EE 10+标准
Commons IO
2.21.0
IO工具
文件流处理
Commons Lang3
3.20.0
通用工具
字符串、数组、对象工具
Commons Text
1.15.0
文本处理
字符串转义、相似度计算
Apache Fesod Sheet
2.0.1-incubating
Excel处理
Excel文件读写
文档版本 :v1.0
编写日期 :2026-04-16
项目版本 :5.0.0
父POM版本 :xtools-parent:5.0.0
JDK版本 :25
维护团队 :xujun.org