Hutool 是一个功能强大的 Java 工具类库,旨在简化 Java 开发中的常见操作,提供高效、易用的 API。它的设计理念是“减少代码量、提高开发效率”,几乎覆盖了日常开发中的所有工具需求。以下是 Hutool 的核心模块及典型使用场景详解:
一、Hutool 核心模块概览
模块 | 功能描述 | 典型工具类 |
---|---|---|
工具类(Core) | 基础工具(字符串、日期、反射等) | StrUtil , DateUtil , ClassUtil |
转换(Convert) | 类型转换(对象、编码、进制等) | Convert , HexUtil , UnicodeUtil |
网络(Http) | HTTP 请求、响应处理 | HttpUtil , HttpRequest , HttpResponse |
加密(Crypto) | 对称/非对称加密、摘要算法 | SecureUtil , DigestUtil , RSA |
文件IO(IO) | 文件读写、流操作 | FileUtil , IoUtil |
JSON 处理 | JSON 解析与生成 | JSONUtil , JSONObject , JSONArray |
Excel 操作 | Excel 读写(基于 POI 封装) | ExcelUtil , ExcelReader , ExcelWriter |
缓存(Cache) | 本地缓存(LRU、FIFO 等策略) | CacheUtil , LRUCache , FIFOCache |
定时任务 | 简单定时任务调度 | CronUtil |
系统工具 | JVM 信息、系统属性、线程工具 | SystemUtil , RuntimeUtil , ThreadUtil |
二、Hutool 核心功能详解
1. 字符串处理(StrUtil
)
- 功能:字符串判空、格式化、截取、替换等。
- 示例:
// 判断字符串是否为空(支持空字符串、空白字符) boolean isEmpty = StrUtil.isEmpty(" "); // false boolean isBlank = StrUtil.isBlank(" "); // true // 格式化字符串(类似 Slf4j) String template = "姓名:{},年龄:{}"; String formatted = StrUtil.format(template, "张三", 25); // "姓名:张三,年龄:25"
2. 日期处理(DateUtil
)
- 功能:日期解析、格式化、计算、时区转换。
- 示例:
// 字符串转日期(自动识别格式) Date date = DateUtil.parse("2023-10-01"); // 计算时间差 long betweenDays = DateUtil.between(date, new Date(), DateUnit.DAY); // 格式化日期 String format = DateUtil.format(date, "yyyy/MM/dd"); // "2023/10/01"
3. 类型转换(Convert
)
- 功能:基本类型、字符串、集合、枚举等之间的转换。
- 示例:
// 字符串转数字(自动处理异常) int num = Convert.toInt("123", 0); // 转换失败返回默认值 0 // 集合转数组 List<String> list = Arrays.asList("a", "b", "c"); String[] array = Convert.toStrArray(list); // 编码转换(如 Unicode) String unicode = Convert.strToUnicode("你好", true); // "\\u4f60\\u597d"
4. HTTP 请求(HttpUtil
)
- 功能:发送 GET/POST 请求、文件上传、Cookie 管理。
- 示例:
// GET 请求(自动处理编码) String response = HttpUtil.get("https://api.example.com/data"); // POST 表单提交 HashMap<String, Object> params = new HashMap<>(); params.put("username", "admin"); params.put("password", "123456"); String result = HttpUtil.post("https://api.example.com/login", params); // 下载文件 long size = HttpUtil.downloadFile("https://example.com/file.zip", FileUtil.file("/download/"));
5. 加密解密(SecureUtil
)
- 功能:支持 AES、DES、RSA、MD5、SHA 等算法。
- 示例:
// AES 加密 String content = "Hello World"; String key = "1234567890abcdef"; String encrypted = SecureUtil.aes(key.getBytes()).encryptHex(content); // MD5 摘要 String md5 = SecureUtil.md5("password");
6. 文件操作(FileUtil
)
- 功能:文件读写、目录操作、路径处理。
- 示例:
// 读取文件内容(自动关闭流) String content = FileUtil.readUtf8String("test.txt"); // 递归拷贝目录 FileUtil.copy("src/", "backup/", true); // 获取文件扩展名 String extName = FileUtil.extName("demo.jpg"); // "jpg"
7. JSON 处理(JSONUtil
)
- 功能:JSON 解析、生成、格式化。
- 示例:
// 对象转 JSON User user = new User("张三", 25); String jsonStr = JSONUtil.toJsonStr(user); // {"name":"张三","age":25} // JSON 转 Bean User parsedUser = JSONUtil.toBean(jsonStr, User.class); // 解析复杂 JSON JSONObject json = JSONUtil.parseObj("{'data': {'list': [1,2,3]}}"); JSONArray list = json.getJSONObject("data").getJSONArray("list");
三、Hutool 的优势
- 低学习成本
- 方法名直观(如
StrUtil.isEmpty()
),无需记忆复杂 API。
- 方法名直观(如
- 无依赖
- 核心模块仅依赖
Java SDK
,避免与其他库冲突。
- 核心模块仅依赖
- 高性能
- 优化底层实现(如缓存、复用对象),减少资源消耗。
- 文档齐全
- 提供详细中文文档和示例:Hutool 文档
四、快速上手
1. 添加依赖(Maven)
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.20</version>
</dependency>
2. 常用工具类静态导入
import static cn.hutool.core.util.StrUtil.*;
import static cn.hutool.core.date.DateUtil.*;
五、注意事项
- 版本兼容性:Hutool 5.x 需要 JDK 8+,低版本项目可使用 Hutool 4.x。
- 日志框架:Hutool 内置日志门面,自动适配 Slf4j、Log4j 等。
- 性能敏感场景:避免频繁调用工具类方法(如循环中大量使用
DateUtil
)。