Hutool
Hutool 是一个按能力拆分的 Java 工具箱。它的源码价值不只在于“工具多”,更在于如何把字符串、日期、反射、转换、HTTP 和配置能力组织成低门槛 API,同时保留模块边界和可替换实现。
本册问题地图
Section titled “本册问题地图”Hutool 的价值在于 API 设计和模块边界,而不是某一个工具类:
- 为什么要拆成多个 Maven 模块? 常用字符串和集合工具不应强制依赖 HTTP、JSON、POI 等重量模块;模块化把便利性和依赖体积分开。
- 命名与重载如何降低学习成本? 同一概念保持一致命名,重载覆盖常见输入形态;但重载过多会让
null、可变参数和类型推断产生歧义。 - 转换工具为什么要有 Setting? 日期、数字、Bean 和字符串转换都存在默认格式与失败策略,集中配置能避免每个调用点各自解释。
- 工具类如何处理异常? 将受检异常转成统一异常能缩短调用代码,但也可能掩盖恢复条件;调用方仍需区分参数错误、网络失败和数据格式错误。
- “方便”边界在哪里? 工具箱适合降低重复劳动,不应替业务决定连接关闭、事务提交、密钥管理和线程生命周期。
本册聚焦 dromara/hutool 的 5.x 主线,重点阅读 hutool-core、hutool-setting、hutool-http、hutool-json、hutool-crypto、hutool-poi 与 hutool-aop 等模块。具体源码版本以本地快照为准。
| 项 | 值 |
|---|---|
| 仓库 | dromara/hutool |
| 核心模块 | hutool-core |
| 配置模块 | hutool-setting |
| 网络与数据 | hutool-http、hutool-json |
| 扩展模块 | hutool-crypto、hutool-poi、hutool-aop |
它解决什么问题
Section titled “它解决什么问题”- 为常见 Java 标准库操作提供短路径 API,并集中处理空值、格式和异常细节。
- 以 Maven 模块拆分可选能力,避免核心工具依赖全部第三方库。
- 用
Convert、TypeReference、BeanUtil等入口统一类型转换和对象操作。 - 用 fluent builder、静态门面和可配置对象兼顾快速调用与复杂场景。
cn.hutool.core.util.*:字符串、对象、数组、集合、日期和资源工具。cn.hutool.core.convert.Convert:从字符串或对象到目标类型的统一转换入口。cn.hutool.setting.Setting:分组配置、插值和类型读取。cn.hutool.http.HttpUtil/HttpRequest:HTTP 快速调用与请求对象模型。cn.hutool.json.JSONUtil/JSONObj/JSONArr:JSON 门面与树模型。cn.hutool.core.bean.BeanUtil/ReflectUtil:Bean 拷贝、属性访问和反射调用。