Hutool 核心功能全解析

Hutool 核心功能全解析|Java 开发必备工具库

在这里插入图片描述

hutool官方地址: https://www.hutool.cn/

hutool API参考文档: https://doc.hutool.cn/pages/index/

hutool主要模块内容:

核心模块主要介绍备注
Hutool-corehutool核心方法及数据结构包
Hutool-settingSetting模块主要针对Properties文件读写做封装,同时定义一套自己的配置文件规范
Hutool-logHutool-log只是一个日志的通用门面,功能类似于Slf4j
Hutool-cache提供简易的缓存实现,此模块参考了jodd工具中的Cache模块
Hutool-jsonJSON封装,基于json.org官方库改造,其实阿里的com.alibaba.fastjson也很强大
Hutool-crypto加密解密模块,实现了对JDK中加密解密算法的封装,入口为SecureUtil
Hutool-dfaDFA全称为:Deterministic Finite Automaton,即确定有穷自动机
Hutool-db是一个在JDBC基础上封装的数据库操作工具类,通过包装,使用ActiveRecord思想操作数据库
Hutool-http针对JDK的HttpUrlConnection做一层封装,简化了HTTPS请求、文件上传、Cookie记忆等操作,使Http请求变得无比简单
Hutool-cron定时任务模块,提供类Crontab表达式的定时任务,实现参考了Cron4j,同时可以支持秒级别的定时任务定义和年的定义(同时兼容Crontab、Cron4j、Quartz表达式)
Hutool-extra由于Hutool的原则是不依赖于其它配置文件,但是很多时候我们需要针对第三方非常棒的库做一些工具类化的支持,因此Hutoo-extra包主要用于支持第三方库的工具类支持
Hutool-bloomFilter布隆过滤,提供一些Hash算法的布隆过滤
Hutool-aopJDK动态代理封装,提供非IOC下的切面支持
Hutool-scriptScript模块主要针对Java的javax.script封装,可以运行Javascript脚本
Hutool-poiHutool针对POI封装一些常用工具,使Java操作Excel等文件变得异常简单
Hutool-systemSystem模块主要获取系统、JVM、内存、CPU等信息,以便动态监测系统状态
Hutool-captcha图片验证码实现
Hutool-socketSocket套接字相关工具类封装
Hutool-jwtJSON Web Token (JWT)封装

安装

🍊Maven:在项目的pom.xml的dependencies中加入以下内容:

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.36</version>
</dependency>

一、Hutool 核心功能概览

1. 类型转换与数据处理

  • 功能亮点Convert 类支持 任意类型转换,涵盖基本类型、集合、日期、编码等场景。
  • 代码示例
    // 字符串转数字(带默认值)
    int num = Convert.toInt("123", 0); // 输出 123 
    // 金额转中文大写
    String money = Convert.digitToChinese(67556.32); // "陆万柒仟伍佰伍拾陆元叁角贰分" 
    

2. 日期时间操作

  • 核心工具DateUtilLocalDateTimeUtil 简化日期计算与格式化。
  • 实战场景
    // 计算两个日期相差天数
    long days = DateUtil.between(DateUtil.parse("2025-01-01"), new Date(), DateUnit.DAY); 
    // 日期字符串解析
    LocalDateTime time = LocalDateTimeUtil.parse("2025-03-20T12:00:00"); 
    

3. 文件与流处理

  • 高效工具FileUtilIoUtil 实现文件读写、复制、压缩等操作。
  • 典型应用
    // 递归删除文件夹
    FileUtil.del("D:/temp"); 
    // 大文件分片处理
    File file = FileUtil.file("largeFile.zip");
    IoUtil.copyByNio(file, response.getOutputStream(), 1024 * 1024); // 1MB 分片 
    

4. HTTP 请求封装

  • 简化网络交互HttpUtil 支持 GET/POST 请求、文件下载。
  • 代码示例
    // 发送 GET 请求并获取 JSON 数据
    String response = HttpUtil.get("https://api.example.com/data");
    JSONObject json = JSONUtil.parseObj(response); 
    

5. 加密与安全

  • 安全工具SecureUtil 提供 MD5、AES、RSA 等加密算法。
  • 使用场景
    // MD5 加密
    String md5 = SecureUtil.md5("password"); 
    // AES 加密解密
    String encrypted = SecureUtil.aes(key.getBytes(), content.getBytes(), Cipher.ENCRYPT_MODE); 
    

6. 集合与数组操作

  • 集合工具CollUtilListUtil 支持交并集、分片、转换。
  • 实战代码
    // 分批次处理列表(每批 200 条)
    List<List<Integer>> batches = ListUtil.split(list, 200); 
    // 对象列表转换
    List<UserVO> voList = BeanUtil.copyToList(userList, UserVO.class); 
    

7. JSON 与 Excel 处理

  • 数据处理利器
    • JSON 转换JSONUtil 实现对象与 JSON 互转。
    • Excel 操作ExcelUtil 支持大数据量读写。
    // 对象转 JSON 并格式化
    String json = JSONUtil.toJsonPrettyStr(user); 
    // Excel 读取(Sax 模式节省内存)
    ExcelReader reader = ExcelUtil.getReader("data.xlsx");
    List<Map<String, Object>> data = reader.readAll(); 
    

8. 邮件发送

  • 快速集成MailUtil 一行代码发送邮件。
  • 配置示例
    MailAccount account = new MailAccount()
      .setHost("smtp.qq.com")
      .setUser("xxx@qq.com")
      .setPass("授权码");
    MailUtil.send(account, "收件人", "主题", "内容", true); // HTML 格式 
    

9. 缓存与定时任务

  • 扩展功能
    • 缓存:支持 FIFO、LRU 等策略(CacheUtil)。
    • 定时任务CronUtil 实现类 Crontab 调度。

10. 反射与克隆

  • 高级特性
    • 反射工具ReflectUtil 调用私有方法。
    • 深克隆ObjectUtil.cloneByStream(obj) 支持序列化对象。

二、Hutool 实战优势总结

场景原生 Java 代码量Hutool 代码量效率提升
HTTP 请求封装20 行(处理异常/编码)1 行95%
日期格式化5 行(SimpleDateFormat)1 行80%
文件分片上传50 行(手动分片+流控制)3 行94%

三、Hutool 最佳实践

  1. 按需引入模块:避免引入 hutool-all,通过 Maven 按模块依赖。
  2. 结合 Spring Boot:在 @Configuration 中预配置常用工具 Bean。
  3. 异常处理:使用 ExceptionUtil 将异常信息转为字符串日志。

四、总结与资源

Hutool 的核心价值在于 “消灭 Util 包”,其模块化设计适配从个人项目到企业级系统。建议开发者关注以下资源:


引用来源

版权声明:原创内容,转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值