# 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` 最适合补的位置。