news 2026/4/28 13:33:47

不要再封装各种Util工具类了,这个神级框架值得拥有!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
不要再封装各种Util工具类了,这个神级框架值得拥有!

👉这是一个或许对你有用的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:

  • 《项目实战(视频)》:从书中学,往事中“练”

  • 《互联网高频面试题》:面朝简历学习,春暖花开

  • 《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题

  • 《精进 Java 学习指南》:系统学习,互联网主流技术栈

  • 《必读 Java 源码专栏》:知其然,知其所以然

👉这是一个或许对你有用的开源项目

国产Star破10w的开源项目,前端包括管理后台、微信小程序,后端支持单体、微服务架构

RBAC权限、数据权限、SaaS多租户、商城、支付、工作流、大屏报表、ERP、CRMAI大模型、IoT物联网等功能:

  • 多模块:https://gitee.com/zhijiantianya/ruoyi-vue-pro

  • 微服务:https://gitee.com/zhijiantianya/yudao-cloud

  • 视频教程:https://doc.iocoder.cn

【国内首批】支持 JDK17/21+SpringBoot3、JDK8/11+Spring Boot2双版本

来源:ryanc.cc/archives/hutool-java-tools-lib

  • 一、功能

  • 二、安装

  • 三、简单测试


今天给大家推荐一个非常好用的Java工具类库,企业级常用工具类,基本都有,能避免重复造轮子及节省大量的开发时间,非常不错,值得大家去了解使用。

Hutool谐音 “糊涂”,寓意追求 “万事都作糊涂观,无所谓失,无所谓得” 的境界。

Hutool 是一个 Java 工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让 Java 语言也可以 “甜甜的”。Hutool 最初是我项目中 “util” 包的一个整理,后来慢慢积累并加入更多非业务相关功能,并广泛学习其它开源项目精髓,经过自己整理修改,最终形成丰富的开源工具集。

一、功能

一个 Java 基础工具类,对文件、流、加密解密、转码、正则、线程、XML 等 JDK 方法进行封装,组成各种 Util 工具类,同时提供以下组件:

  • tool-aop JDK 动态代理封装,提供非 IOC 下的切面支持

  • hutool-bloomFilter 布隆过滤,提供一些 Hash 算法的布隆过滤

  • hutool-cache 缓存

  • hutool-core 核心,包括 Bean 操作、日期、各种 Util 等

  • hutool-cron 定时任务模块,提供类 Crontab 表达式的定时任务

  • hutool-crypto 加密解密模块

  • hutool-db JDBC 封装后的数据操作,基于 ActiveRecord 思想

  • hutool-dfa 基于 DFA 模型的多关键字查找

  • hutool-extra 扩展模块,对第三方封装(模板引擎、邮件等)

  • hutool-http 基于 HttpUrlConnection 的 Http 客户端封装

  • hutool-log 自动识别日志实现的日志门面

  • hutool-script 脚本执行封装,例如 Javascript

  • hutool-setting 功能更强大的 Setting 配置文件和 Properties 封装

  • hutool-system 系统参数调用封装(JVM 信息等)

  • hutool-json JSON 实现

  • hutool-captcha 图片验证码实现

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

二、安装

maven项目在pom.xml添加以下依赖即可:

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

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud

  • 视频教程:https://doc.iocoder.cn/video/

三、简单测试

DateUtil

日期时间工具类,定义了一些常用的日期时间操作方法。关于Java IO多路复用:https://www.yoodb.com/java/io/io-multiplexing.html

//Date、long、Calendar之间的相互转换 //当前时间 Date date = DateUtil.date(); //Calendar转Date date = DateUtil.date(Calendar.getInstance()); //时间戳转Date date = DateUtil.date(System.currentTimeMillis()); //自动识别格式转换 String dateStr = "2017-03-01"; date = DateUtil.parse(dateStr); //自定义格式化转换 date = DateUtil.parse(dateStr, "yyyy-MM-dd"); //格式化输出日期 String format = DateUtil.format(date, "yyyy-MM-dd"); //获得年的部分 int year = DateUtil.year(date); //获得月份,从0开始计数 int month = DateUtil.month(date); //获取某天的开始、结束时间 Date beginOfDay = DateUtil.beginOfDay(date); Date endOfDay = DateUtil.endOfDay(date); //计算偏移后的日期时间 Date newDate = DateUtil.offset(date, DateField.DAY_OF_MONTH, 2); //计算日期时间之间的偏移量 long betweenDay = DateUtil.between(date, newDate, DateUnit.DAY);

StrUtil

字符串工具类,定义了一些常用的字符串操作方法。

//判断是否为空字符串 String str = "test"; StrUtil.isEmpty(str); StrUtil.isNotEmpty(str); //去除字符串的前后缀 StrUtil.removeSuffix("a.jpg", ".jpg"); StrUtil.removePrefix("a.jpg", "a."); //格式化字符串 String template = "这只是个占位符:{}"; String str2 = StrUtil.format(template, "我是占位符"); LOGGER.info("/strUtil format:{}", str2);

NumberUtil

数字处理工具类,可用于各种类型数字的加减乘除操作及判断类型。

double n1 = 1.234; double n2 = 1.234; double result; //对float、double、BigDecimal做加减乘除操作 result = NumberUtil.add(n1, n2); result = NumberUtil.sub(n1, n2); result = NumberUtil.mul(n1, n2); result = NumberUtil.div(n1, n2); //保留两位小数 BigDecimal roundNum = NumberUtil.round(n1, 2); String n3 = "1.234"; //判断是否为数字、整数、浮点数 NumberUtil.isNumber(n3); NumberUtil.isInteger(n3); NumberUtil.isDouble(n3); BeanUtil JavaBean的工具类,可用于Map与JavaBean对象的互相转换以及对象属性的拷贝。 PmsBrand brand = new PmsBrand(); brand.setId(1L); brand.setName("小米"); brand.setShowStatus(0); //Bean转Map Map<String, Object> map = BeanUtil.beanToMap(brand); LOGGER.info("beanUtil bean to map:{}", map); //Map转Bean PmsBrand mapBrand = BeanUtil.mapToBean(map, PmsBrand.class, false); LOGGER.info("beanUtil map to bean:{}", mapBrand); //Bean属性拷贝 PmsBrand copyBrand = new PmsBrand(); BeanUtil.copyProperties(brand, copyBrand); LOGGER.info("beanUtil copy properties:{}", copyBrand);

MapUtil

Map操作工具类,可用于创建Map对象及判断Map是否为空。

//将多个键值对加入到Map中 Map<Object, Object> map = MapUtil.of(new String[][]{ {"key1", "value1"}, {"key2", "value2"}, {"key3", "value3"} }); //判断Map是否为空 MapUtil.isEmpty(map); MapUtil.isNotEmpty(map); AnnotationUtil 注解工具类,可用于获取注解与注解中指定的值。 //获取指定类、方法、字段、构造器上的注解列表 Annotation[] annotationList = AnnotationUtil.getAnnotations(HutoolController.class, false); LOGGER.info("annotationUtil annotations:{}", annotationList); //获取指定类型注解 Api api = AnnotationUtil.getAnnotation(HutoolController.class, Api.class); LOGGER.info("annotationUtil api value:{}", api.description()); //获取指定类型注解的值 Object annotationValue = AnnotationUtil.getAnnotationValue(HutoolController.class, RequestMapping.class);

SecureUtil

加密解密工具类,可用于MD5加密。

//MD5加密 String str = "123456"; String md5Str = SecureUtil.md5(str); LOGGER.info("secureUtil md5:{}", md5Str);

CaptchaUtil验证码工具类,可用于生成图形验证码。

//生成验证码图片 LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(200, 100); try { request.getSession().setAttribute("CAPTCHA_KEY", lineCaptcha.getCode()); response.setContentType("image/png");//告诉浏览器输出内容为图片 response.setHeader("Pragma", "No-cache");//禁止浏览器缓存 response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expire", 0); lineCaptcha.write(response.getOutputStream()); } catch (IOException e) { e.printStackTrace(); }

Hutool中的工具类很多,可以参考官网:https://www.hutool.cn/

更多,好用工具:https://www.yoodb.com/

当然,还有很多其他非常方便的方法,留着你自己去测试吧!使用Hutool工具,可以大大提高你的开发效率!


欢迎加入我的知识星球,全面提升技术能力。

👉 加入方式,长按”或“扫描”下方二维码噢

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。

文章有帮助的话,在看,转发吧。 谢谢支持哟 (*^__^*)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/28 13:32:22

Java的ThreadLocal内存泄漏原因与解决方案

Java的ThreadLocal内存泄漏问题解析与应对策略 在多线程编程中&#xff0c;ThreadLocal是一种常用的线程隔离机制&#xff0c;它能为每个线程提供独立的变量副本。使用不当可能导致内存泄漏&#xff0c;甚至引发系统性能问题。本文将深入分析ThreadLocal内存泄漏的根源&#x…

作者头像 李华
网站建设 2026/4/28 13:27:33

谈谈我的大三第一次面试实习

我的第一家实习是在广州公司的主要业务是可回收火箭&#xff0c;在去广州的前天晚上我在boos上看到了这份实习岗位&#xff0c;抱着试一试的心态投递结果有了后续的面试。实习岗位的工作内容呢用Qt写上位机并且做软硬件联调&#xff0c;了解步进电机和和伺服电机的控制&#xf…

作者头像 李华
网站建设 2026/4/28 13:26:21

那个靠自学封神的DeepSeek,亲手把强化学习踢下了C位

朋友们&#xff0c;事情正在起变化。 去年DeepSeek R1发布的时候&#xff0c;整个AI圈都在为两个字沸腾——强化学习。那篇后来登上《自然》封面的论文&#xff0c;讲了一个近乎浪漫的故事&#xff1a;他们搞了个叫R1-Zero的模型&#xff0c;不给它任何人类解题范例&#xff0c…

作者头像 李华
网站建设 2026/4/28 13:22:31

如何快速优化Windows 11:终极系统清理与隐私保护完整指南

如何快速优化Windows 11&#xff1a;终极系统清理与隐私保护完整指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and…

作者头像 李华
网站建设 2026/4/28 13:12:47

灰色综合评价实战:从指标选取到权重确定,一次讲清避坑要点

灰色综合评价实战&#xff1a;从指标选取到权重确定&#xff0c;一次讲清避坑要点 在复杂决策场景中&#xff0c;当数据不完整或信息模糊时&#xff0c;传统统计方法往往束手无策。灰色系统理论提供的综合评价方法&#xff0c;正成为产品评估、供应商筛选、绩效管理等场景的秘密…

作者头像 李华
网站建设 2026/4/28 13:12:07

2025届学术党必备的十大AI论文助手推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek AI写作工具是借助自然语言处理技术还有深度学习算法所构建而成的智能辅助系统&#xff0c;该…

作者头像 李华