# htool工具类库
**Repository Path**: javaex/htool
## Basic Information
- **Project Name**: htool工具类库
- **Description**: Htool是一款小巧的java工具包。涵盖了常用的,但是spring、apache等必用框架未提供的工具类库。例如StringUtils这种完善的工具类,Htool就没必要重复造轮子了。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 37
- **Forks**: 2
- **Created**: 2022-11-26
- **Last Updated**: 2026-04-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# htool
一款小巧、克制、面向业务开发的 Java 工具包。不追求大而全,只补 JDK / Spring / Apache 没有直接补好的高频开发缺口。
---
## 为什么是 htool
在很多项目里,我们经常会遇到这样的情况:
- JDK 原生能做,但是写起来很啰嗦
- Spring 很强,但它的目标不是"补齐所有工具方法"
- Apache Commons 很成熟,但并不覆盖所有业务开发中的高频小缺口
- 引入一个"大而全工具库",最后往往只用了其中很小一部分
`htool` 的定位就是:
**只做"高频、轻量、实用"的工具方法,不重复造成熟轮子,不引入不必要的重依赖。**
一句话概括:
**该有的便利要有,不该有的包袱不要有。**
---
## 设计目标
`htool` 希望解决的是以下问题:
1. **补缺** - 优先补充业务项目里经常会写、但又不值得每次手写的工具代码
2. **克制** - 不和成熟框架全面重叠,不做大而全的功能堆叠
3. **轻量** - 尽量使用 JDK 原生能力,尽量避免额外重依赖
4. **模块化** - 按模块拆分,按需引入,用到哪个模块,再引哪个模块
5. **现代化** - 面向 Jakarta 生态,适配现代 Spring / Spring Boot 项目
---
## 适合什么项目
- Spring Boot / Jakarta 业务系统
- 中后台管理系统
- 接口服务项目
- 希望依赖尽量干净的工具型项目
- 不想为了几个小方法引入一大堆额外能力的团队
---
## 不适合做什么
`htool` **不是**一个"什么都做"的超级工具库。以下能力不是它的方向:
- JSON 全家桶
- ORM / JDBC 框架
- Excel / Word / PDF 处理平台
- 模板引擎
- 分布式缓存框架
- 全功能 HTTP 客户端生态
- 各种重型基础设施封装
`htool` 的边界很明确:**只补业务开发中的高频轻工具,不做平台级大封装。**
---
## 模块说明
### htool-core
核心工具模块,提供最常用的基础工具能力。
| 包路径 | 类名 | 功能说明 |
|--------|------|----------|
| `bean` | Beans | Bean 属性复制,支持忽略 null / blank 值 |
| `codec` | Base64Utils | Base64 编解码 |
| `collection` | Lists | 集合处理:提取、过滤、分批、分组、转换 |
| `datahandle` | TreeUtils | 树结构构建与解析 |
| `date` | DateUtils | 日期时间处理:加减、格式化、比较、星座生肖 |
| `enums` | EnumUtils | 枚举操作:获取、转换、查找 |
| `id` | IdUtils | ID 生成:UUID、Snowflake 算法 |
| `io` | FileUtils、IOUtils、ZipUtils | 文件操作、压缩解压 |
| `map` | MapUtils | Map 安全取值、排序 |
| `number` | NumUtils | 数字处理:精度运算、中文大写金额 |
| `reflection` | ClassUtils | 反射工具:获取属性、方法 |
| `regular` | CheckUtils | 校验:手机号、邮箱、身份证、车牌等 |
| `string` | StringUtils、IDCardUtils、ZHUtils | 字符串处理、身份证解析、繁简转换 |
### htool-cache
轻量缓存模块,适合单机进程内缓存场景。
- `CacheUtils` - 缓存存取与过期管理
- `CacheManagerImpl` - 缓存管理器实现
- `CacheInfo` - 缓存信息模型
### htool-crypto
常见加密解密工具。
- `DigestUtils` - MD5 / SHA 系列哈希
- `AESUtils` / `DESUtils` - 对称加密
- `RSAUtils` - RSA 非对称加密
- `SignUtils` - 数字签名与验签
### htool-http
HTTP 相关辅助工具。
- `HttpUtils` - 轻量 HTTP 请求(GET / POST / PUT / DELETE)
- `AgentUtils` - IP 获取、浏览器识别
- `CookieUtils` / `SessionUtils` - Cookie 与 Session 操作
- `HtmlUtils` - HTML 安全过滤
### htool-picture
轻量图片处理模块。
- `ImageUtils` - 图片缩放、裁剪、旋转、水印、格式转换
---
## 安装
### Maven 全量引入
```xml
cn.javaex
htool
3.0.0
```
## 快速示例
### 1. 字符串兜底与脱敏
```java
String nickname = StrUtil.defaultIfBlank(inputName, "匿名用户");
String phone = StrUtil.mask("13800138000", 3, 4);
// 结果:138****8000
```
### 2. 集合分批
```java
List> batches = CollUtil.split(idList, 500);
for (List batch : batches) {
userService.batchQuery(batch);
}
```
### 3. Map 安全取值
```java
Integer pageNum = MapUtil.getInt(params, "pageNum");
Integer pageSize = MapUtil.getInt(params, "pageSize");
String keyword = MapUtil.getString(params, "keyword");
```
### 4. 重试执行
```java
String result = RetryUtil.retry(3, Duration.ofMillis(200), () -> remoteClient.query());
```
### 5. URL 构建
```java
String url = HttpUtil.buildUrl(
"https://example.com/search",
Map.of("keyword", "htool", "page", 1)
);
```
---
## htool 的优势
### 1. 不重复造轮子
对于 `StringUtils` 这类已经非常成熟的能力,`htool` 不会盲目重复建设。
### 2. 只补真实开发痛点
补的是项目里真正高频、真正影响开发效率的小缺口,而不是展示型功能。
### 3. 依赖更克制
能用 JDK 解决的,就尽量不引额外依赖。
### 4. 模块化更清晰
避免“为了一个工具方法,引进整车功能”。
### 5. 更适合业务项目落地
很多工具并不需要“功能最强”,而需要“能直接用、够稳定、够轻”。
---
## 版本原则
`htool` 的演进遵循以下原则:
- **优先补方法,不盲目扩边界**
- **优先轻依赖,不引入复杂基础设施**
- **优先业务高频场景,不追求冷门能力覆盖**
- **优先模块清晰,不做大而杂的工具集合**
---
## 文档
文档地址:
- `https://doc.javaex.cn/htool`
官网:
- `https://www.javaex.cn/`
---
## 反馈与建议
如果你在实际项目中遇到了这类问题,欢迎提出建议:
- JDK 写法繁琐
- Spring / Apache 没有直接覆盖
- 业务里高频出现
- 不希望为了一个能力引入重依赖
这类问题,正是 `htool` 最适合补的位置。