# pan-common
**Repository Path**: apanlh/pan-common
## Basic Information
- **Project Name**: pan-common
- **Description**: pan-common是Java Spring Web企业级组件库,通过声明式注解消灭样板代码,内置强大基础工具类底座,配套轻量 HTTP 客户端、JSON 自动适配(Fastjson2/Jackson/Fastjson1)、数据脱敏、国密SM2/SM3/SM4、链式计算及Redis键管理,Java工具集,Spring Boot 2.x / 3.x 兼容,JDK8~21+兼容
- **Primary Language**: Java
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: https://gitee.com/apanlh/pan-common
- **GVP Project**: No
## Statistics
- **Stars**: 67
- **Forks**: 3
- **Created**: 2023-08-31
- **Last Updated**: 2026-05-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 工具类, HttpClient, java工具类, 快速开发, Java
## README

### pan-common
**跟 Spring Web 穿一条裤子,企业开发效率拉满**
[](https://mvnrepository.com/artifact/com.gitee.apanlh/apanlh-common)
[](LICENSE)
[](https://openjdk.org/)
[](https://gitee.com/apanlh/pan-common/stargazers)
**[📖 打开 Wiki 文档](https://gitee.com/apanlh/pan-common/wikis/%E9%A6%96%E9%A1%B5) · [🚀 快速开始](#-快速开始) · [📚 文档目录](#-文档目录) · [🐛 反馈问题](https://gitee.com/apanlh/pan-common/issues)**
---
## 📦 这是什么
`pan-common` 是专为 Spring Web 企业项目设计的**注解化组件库**
它不是 Spring 生态全家桶——分布式锁、服务发现、消息队列这些,而是聚焦在请求解析、Redis 键管理、JSON
序列化等等功能,每天都要写的高频场景上消灭样板代码,同时也在往请求/响应加解密、字段级解密这些方向扩展,慢慢把注解驱动这件事做透
跟通用工具库的本质区别在于:那些库是你主动调方法干活,它是你加个注解,样板代码直接消失
```java
// 声明式 Redis 键管理——静态常量直接操作,不用手动拼 Key
@RegisterRedisKey
public class CacheKeys {
public static final RedisString PHONE_CODE = RedisKeyBuilder.builder().withKeys("sms", "code").buildString();
}
// 业务代码一行完事,RedisTemplate 自动注入
CacheKeys.PHONE_CODE.setForSeconds("13800138000", "123456", 180);
```
```java
// 用户实体 一个注解完成手机号脱敏
public class UserVO {
@Desensitize(type = DesensitizeType.PHONE)
private String phone;
}
// Controller 直接返回,138****1234 自动输出
@GetMapping("/user")
public ResultVO getUser() {
return ResultVO.success(userService.getById(1L));
}
// 调用脱敏工具类,一行搞定
@GetMapping("/user")
public ResultVO getUser() {
User user = userService.getById(1L);
UserVO userVO = CopyUtils.copy(User, UserVO.class);
DesensitizeUtils.desensitize(userVO); // phone 被自动替换为 138****1234
return ResultVO.success(user);
}
```
```java
// 链式计算,自动生成表达式
Num.of(1).add(2).mul(3); // 表达式: 1 + 2 * 3, 结果: 9
Num.of(200).percent(15); // 200 的 15% = 30
// 聚合统计——均值、方差、偏度、峰度一把出
NumCollector.of(1, 2, 3, 4, 5).avg(); // 平均值 3
NumCollector.of(1, 2, 3, 4, 5).median(); // 中位数 3
NumCollector.of(1, 2, 3, 4, 5).stdDev(true); // 总体标准差
```
**相比传统工具库,它更注重与 Spring 生态融合和对复杂业务场景的深度抽象**
例如:声明式注解驱动的 Redis 键管理、统一请求参数封装(支持路径导航)、数据脱敏注解、树结构构建,以及高性能反射缓存(经 JMH
验证,实际场景提升明显),这些设计旨在让开发者写更少、更清晰、更易维护的代码,把精力真正投入到核心业务逻辑中
当然,字符串、集合、IO、日期这些基础工具它也有,但那些只是底座
项目目前维护 **2.x**(Spring Boot 2.x + javax.servlet)和 **3.x**(Spring Boot 3.x + jakarta.servlet)两个版本,核心功能两边通用,升级只换版本号就行
---
## ⚡ 与传统工具库核心区别
- **注解驱动,不只有工具方法**:数据脱敏、树结构构建、字段解密、Redis 键管理……声明式注解搞定很多事情,减少大量样板代码
- **深度 Spring 融合**:不只是提供工具方法,而是直接集成到 Spring 生态,例如声明式 Redis 键管理、统一请求参数封装(支持简单路径导航获取)、Redis
序列化器零配置
- **JSON 适配灵活**:自动适配 Fastjson2 / Jackson / Fastjson1,项目用了哪个库它就自动用哪个,Redis 序列化也一样,零配置切换,不强制绑定
- **性能优化**:反射缓存机制经 JMH 验证,比传统反射调用快一个数量级;字符串、集合等高频工具方法也经过针对性重写,实测性能显著提升
- **轻量级 HTTP/FTP 客户端**:基于 `HttpURLConnection` / `JDK11HttpClient` 实现,支持链式构建、 SPI 扩展、 JDK 版本自适应、拦截器链和多种认证,不依赖第三方库
HttpClient 或 OkHttp,体积小巧,FTP 客户端一并提供
- **本地缓存多种策略**:LRU、LFU、FIFO、LIFO、Weak 引用等多种淘汰策略,无外部依赖,简单实现的轻量方案
---
## ✨ 你能用它干什么
| 场景 | 怎么干 | 省多少事 |
|-----------|-------------------------------------------------------------------|---------------------------------|
| 数据脱敏 | `@Desensitize` 注解 + `DesensitizeUtils.desensitize()`,手机/身份证/邮箱等脱敏 | 不用再写脱敏工具类 |
| Redis 键管理 | `@RegisterRedisKey` 声明键,静态常量直接 set/get | 告别手动拼 Key 和获取 RedisTemplate |
| 树结构构建 | `@TreeId`/`@TreeParentId` 注解 + TreeUtils | 不用手写递归 |
| 统一请求/响应 | `@RequestVo` 注解 + RequestVO 路径导航 | Controller 参数处理零样板代码 |
| HTTP 客户端 | HttpClientBuilder 链式构建,支持拦截器链和多种认证 | 不用引入 Apache HttpClient 或 OkHttp |
| FTP 客户端 | Ftp 工具直接操作上传下载 | 不用找第三方 FTP 库 |
| 国密算法 | SM2/SM3/SM4 开箱即用,国密合规 | 不用翻 bc 库文档拼参数 |
| 本地缓存 | LRU/LFU/FIFO/LIFO/Weak 引用,选策略直接用 | 不用引入 Guava/Caffeine |
| JSON 自动适配 | 项目用 Fastjson2/Jackson/Fastjson1,它自动检测切换 | 零配置,不用改代码 |
| 反射高性能调用 | 反射缓存优化,JMH 验证提升显著 | 高频场景性能有保障 |
| 数值统计计算 | Num / NumCollector 流式计算,均值/方差/偏度/峰度 | 复杂统计代码不用手写 |
---
## 📚 文档目录
- **[Wiki 文档首页](https://gitee.com/apanlh/pan-common/wikis)**
- **[Javadoc API](https://apidoc.gitee.com/apanlh/pan-common)**
| 分类 | 模块 |
|--------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 🍃 Spring 集成 | [Redis 缓存(声明式键管理)](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631403&doc_id=4748393) · [上下文工具](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631404&doc_id=4748393) |
| 🌍 Web 工具 | [Servlet 工具](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631406&doc_id=4748393) · [RequestVO](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631408&doc_id=4748393) · [ResultVO](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631407&doc_id=4748393) |
| 🔐 加密与算法 | [对称加密](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631411&doc_id=4748393) · [非对称加密](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631415&doc_id=4748393) · [摘要算法](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631412&doc_id=4748393) · [EC 密钥](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631413&doc_id=4748393) · [通用密钥](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631414&doc_id=4748393) |
| 🕶️ 脱敏 | [脱敏工具](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631458&doc_id=4748393) |
| 🌲 树结构 | [树结构工具](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631512&doc_id=4748393) |
| 🌐 网络 | [HTTP 客户端](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631496&doc_id=4748393) · [FTP 客户端](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631494&doc_id=4748393) · [HTTP 参数工具](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631495&doc_id=4748393) |
| 💾 缓存 | [本地缓存(LRU/LFU/FIFO/LIFO/Weak)](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631446&doc_id=4748393) |
| 🧰 基础工具 | [StringUtils](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631423&doc_id=4748393) · [CollUtils](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631419&doc_id=4748393) · [MapUtils](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631418&doc_id=4748393) · [ArrayUtils](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631417&doc_id=4748393) · [DateUtils](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631454&doc_id=4748393) · [FileUtils](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631482&doc_id=4748393) · [IOUtils](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631487&doc_id=4748393) · [ReflectionUtils](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631501&doc_id=4748393) · [更多...](https://gitee.com/apanlh/pan-common/wikis/首页) |
| 📦 数据格式 | [JSON(自动适配三引擎)](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631451&doc_id=4748393) · [XML](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631452&doc_id=4748393) |
| 🧮 数值计算 | [Num](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631449&doc_id=4748393) · [NumCollector](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631448&doc_id=4748393) |
| 其他 | [ID 生成](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631485&doc_id=4748393) · [随机数](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631498&doc_id=4748393) · [身份证校验](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631520&doc_id=4748393) · [计时器](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631492&doc_id=4748393) · [字节可读性](https://gitee.com/apanlh/pan-common/wikis/pages?sort_id=17631514&doc_id=4748393) · [完整目录](https://gitee.com/apanlh/pan-common/wikis/首页) |
---
## 📋 最近更新
**v2.0.5 / v3.0.5 — 2026-05-14**
- **RequestVO 优化**:去掉 fastjson2 内部类直接依赖,新增 `getHeader()`、`getBoolean()`、`getLong()`、`getStrArray()`
等方法,路径导航取值更干净
- **Redis 序列化模块优化**:引入适配器模式,自动检测 Fastjson2/Jackson/Fastjson1 三种引擎切换,支持动态白名单注入
- **JsonUtils 优化**:基于 Provider 模式,不再绑定单一 JSON 库,统一方法命名 `parseObject` / `parseArray` / `parseToMap`
- **DateParserUtils 优化**:双层解析(自定义格式 → 内置格式),自动识别 20+ 种常见日期格式
- **[查看完整更新日志 →](https://gitee.com/apanlh/pan-common/blob/master/changelog.md)**
- **[查看路线图 →](https://gitee.com/apanlh/pan-common/blob/master/%E9%A1%B9%E7%9B%AE%E8%B7%AF%E7%BA%BF%E5%9B%BE.md)**
---
## 📦 添加依赖
**Maven**
```xml
com.gitee.apanlh
apanlh-common
2.0.5
com.gitee.apanlh
apanlh-common
3.0.5
```
---
**Gradle**
```gradle
// 2.x
implementation 'com.gitee.apanlh:apanlh-common:2.0.5'
// 3.x
implementation 'com.gitee.apanlh:apanlh-common:3.0.5'
```
---
## ⚠️ 版本兼容性说明
| 版本分支 | Spring Boot 适配 | Servlet 包 | 状态 |
|:--------|:-----------------|:------------------|:-------|
| **2.x** | Spring Boot 2.x | `javax.servlet` | ✅ 长期维护 |
| **3.x** | Spring Boot 3.x+ | `jakarta.servlet` | ✅ 长期维护 |
> 核心功能两边通用,升级只换版本号就行
---
## 🤝 贡献指南
欢迎通过以下方式参与项目,一起把这东西磨得更顺手
详见([贡献指南.md](贡献指南.md))
- 🐞 **反馈Bug**:在 [Issues](https://gitee.com/apanlh/pan-common/issues) 中提交详细的问题描述
- 💡 **功能建议**:在 [Issues](https://gitee.com/apanlh/pan-common/issues) 中提出你的想法
- 🔧 **提交代码**: Fork 项目 → 创建特性分支 → 提交 Pull Request
- 📖 **完善文档**:修正文档错误、补充示例代码
- ⭐ **推荐项目**:点击右上角 Star 支持我
---
## 👤 联系作者
| 方式 | 信息 |
|-----------|------------------------------------------------------|
| **作者** | Pan |
| **邮箱** | [582084583@qq.com](mailto:582084583@qq.com) |
| **Gitee** | [https://gitee.com/apanlh](https://gitee.com/apanlh) |
---
## ⚖️ 开源协议
本项目基于 **MulanPSL2** 开源协议,您可以自由使用、修改和分发
详见:[LICENSE](LICENSE)
---
## 💖 支持项目
如果觉得对您有帮助:
- ⭐ 点击右上角 **Star** 关注项目更新
- 🔄 **Fork** 项目参与代码贡献
- 📢 **分享** 给你的同事和朋友
- 🐞 提交 **Issue** 反馈使用中遇到的问题
您的支持是我持续迭代的动力!
---
返回顶部
Made with ❤️ by Pan