资讯详情

Hutool使用总结(VIP典藏版)

一、简介

二、设计哲学与优势

设计哲学

优势

三、安装

??Maven引用全量

??Maven按需引用

??Gradle引用

四、组件

组件包描述

详细描述组件包

五、使用代码

字符串相关

BigDecimal加减乘除运算

时间工具类(hutool-core)

IO流相关

常用工具类

语言特性

JavaBean

集合类

Map

Codec编码

文本操作

注解

比较器

异常

数学

图片

网络

配置文件(Hutool-setting)

日志(Hutool-log)

缓存(Hutool-cache)

JSON(Hutool-json)

加密解密(Hutool-crypto)

DFA查找(Hutool-dfa)

数据库(Hutool-db)

HTTP客户端(Hutool-http)

定时任务(Hutool-cron)

扩展(Hutool-extra)

切面(Hutool-aop)

脚本(Hutool-script)

Office文档操作(Hutool-poi)

系统调用(Hutool-system)

图形验证码(Hutool-captcha)

网络Socket(Hutool-socket)


一、简介

Hutool小而全Java通过静态方法包装工具库,减少相关工具库API学习成本,提高工作效率Java具有函数语言般的优雅,让Java语言也可以甜。

Hutool工具方法来自每个用户的精心雕刻,涵盖了Java底层代码开发的各个方面都是大的目开发中解决小问题的利器,也是小型项目中的效率担当;

  • Web开发
  • 与其它框架无耦合
  • 高度可替换

二、设计哲学与优势

设计哲学

Hutool的设计思想是尽量减少重复的定义,让项目中的util这个package尽量少,总的来说有如下的几个思想:

  • 方法优先于对象
  • 自动识别优于用户定义
  • 便捷性与灵活性并存
  • 适配与兼容
  • 可选依赖原则
  • 无侵入原则

优势

其余工具跟Huttol相比,有哪些不足:

  • Apache全家桶:英文注释,方法使用需要查
  • Guava:Jar包很大,API别扭
  • Jodd:与Hutool最相似,功能不齐全
  • Nutz:工具方法很好用,但是是一个框架
  • Voovan:工具方法很好用,解决了IO问题优先,应用场景不宽

三、安装

🍊Maven引用全量

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

🍊Maven按需引用

例如引用hutool-aop

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-aop</artifactId>
            <version>5.8.2</version>
        </dependency>

🍐Gradle引用

implementation 'cn.hutool:hutool-all:5.8.2'

四、组件

组件包描述

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

模块 介绍
hutool-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 扩展模块,对第三方封装(模板引擎、邮件、Servlet、二维码、Emoji、FTP、分词等)
hutool-http 基于HttpUrlConnection的Http客户端封装
hutool-log 自动识别日志实现的日志门面
hutool-script 脚本执行封装,例如Javascript
hutool-setting 功能更强大的Setting配置文件和Properties封装
hutool-system 系统参数调用封装(JVM信息等)
hutool-json JSON实现
hutool-captcha 图片验证码实现
hutool-poi 针对POI中Excel和Word的封装
hutool-socket 基于Java的NIO和AIO的Socket封装
hutool-jwt JSON Web Token (JWT)封装实现

可以根据需求对每个模块单独引入,也可以通过引入hutool-all方式引入所有模块。

组件包详细描述

标签: cn槽型连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台

cn.hutool Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
cn.hutool.aop JDK动态代理封装,提供非IOC下的切面支持
cn.hutool.aop.aspects 切面实现,提供一些基本的切面实现
cn.hutool.aop.interceptor 代理拦截器实现
cn.hutool.aop.proxy 代理实现
cn.hutool.bloomfilter 布隆过滤,提供一些Hash算法的布隆过滤
cn.hutool.bloomfilter.bitMap BitMap实现
cn.hutool.bloomfilter.filter 各种Hash算法的过滤器实现
cn.hutool.cache 提供简易的缓存实现,此模块参考了jodd工具中的Cache模块
cn.hutool.cache.file 提供针对文件的缓存实现
cn.hutool.cache.impl 提供各种缓存实现
cn.hutool.captcha 图片验证码实现
cn.hutool.captcha.generator 验证码生成策略实现
cn.hutool.core Hutool核心方法及数据结构包
cn.hutool.core.annotation 注解包,提供增强型注解和注解工具类
cn.hutool.core.bean Bean相关操作,包括Bean信息描述,Bean路径表达式、动态Bean、Bean工具等
cn.hutool.core.bean.copier Bean拷贝实现,包括拷贝选项等
cn.hutool.core.bean.copier.provider Bean值提供者方式封装
cn.hutool.core.builder 建造者工具
用于建造特定对象或结果
cn.hutool.core.clone 克隆封装
cn.hutool.core.codec BaseN以及BCD编码封装
cn.hutool.core.collection 集合以及Iterator封装,包括集合工具CollUtil,Iterator和Iterable工具IterUtil
cn.hutool.core.comparator 各种比较器(Comparator)实现和封装
cn.hutool.core.compiler 运行时编译java源码,动态从字符串或外部文件加载类
cn.hutool.core.compress 压缩解压封装
cn.hutool.core.convert 万能类型转换器以及各种类型转换的实现类,其中Convert为转换器入口,提供各种toXXX方法和convert方法
cn.hutool.core.convert.impl 各种类型转换的实现类,其都为Converter接口的实现,用于将未知的Object类型转换为指定类型
cn.hutool.core.date 日期封装,日期的核心为DateTime类,DateUtil提供日期操作的入口
cn.hutool.core.date.chinese 农历相关类汇总,包括农历月、天干地支、农历节日、24节气等
cn.hutool.core.date.format 提供线程安全的日期格式的格式化和解析实现
cn.hutool.core.exceptions 特殊异常封装,同时提供异常工具ExceptionUtil
cn.hutool.core.getter getXXX方法的接口和抽象实现
cn.hutool.core.img 图像处理相关工具类封装
cn.hutool.core.img.gif GIF处理,来自:https://github.com/rtyley/animated-gif-lib-for-java
cn.hutool.core.io IO相关封装和工具类,包括Inputstream和OutputStream实现类,工具包括流工具IoUtil、文件工具FileUtil和Buffer工具BufferUtil
cn.hutool.core.io.checksum IO校验相关库和工具
cn.hutool.core.io.checksum.crc16 CRC16相关算法封装为Checksum
cn.hutool.core.io.copy IO流拷贝相关封装相关封装
cn.hutool.core.io.file 对文件读写的封装,包括文件拷贝、文件读取、文件写出、行处理等
cn.hutool.core.io.file.visitor FileVisitor功能性实现,包括递归删除、拷贝等
cn.hutool.core.io.resource 针对ClassPath和文件中资源读取的封装,主要入口为工具类ResourceUtil
cn.hutool.core.io.unit 数据单位相关封装,包括DataUnit数据单位和DataSize数据大小
cn.hutool.core.io.watch 基于JDK7+ WatchService的文件和目录监听封装,支持多级目录
cn.hutool.core.io.watch.watchers 文件监听中的观察者实现类,包括延迟处理、处理链等
cn.hutool.core.lang 语言特性包,包括大量便捷的数据结构,例如验证器Validator,分布式ID生成器Snowflake等
cn.hutool.core.lang.ansi 命令行终端中ANSI 转义序列相关封装,如ANSI颜色等
cn.hutool.core.lang.caller 调用者接口及实现。可以通过此类的方法获取调用者、多级调用者以及判断是否被调用
cn.hutool.core.lang.copier 拷贝抽象实现,通过抽象拷贝,可以实现文件、流、Buffer之间的拷贝实现
cn.hutool.core.lang.func 函数封装
接口灵感来自于ActFramework
一个函数接口代表一个一个函数,用于包装一个函数为对象
在JDK8之前,Java的函数并不能作为参数传递,也不能作为返回值存在,此接口用于将一个函数包装成为一个对象,从而传递对象
cn.hutool.core.lang.generator 提供生成器接口及相关封装
cn.hutool.core.lang.hash 提供Hash算法的封装
cn.hutool.core.lang.id 提供各种ID生成
cn.hutool.core.lang.intern 规范化表示形式封装
所谓规范化,即当两个对象equals时,规范化的对象则可以实现==
此包中的相关封装类似于 String#intern()
cn.hutool.core.lang.loader 加载器的抽象接口和实现,包括懒加载的实现等
cn.hutool.core.lang.mutable 提供可变值对象的封装,用于封装int、long等不可变值,使其可变
cn.hutool.core.lang.reflect 提供反射相关功能对象和类
cn.hutool.core.lang.tree 提供通用树生成,特点:
cn.hutool.core.lang.tree.parser
cn.hutool.core.map Map相关封装,提供特殊Map实现以及Map工具MapUtil
cn.hutool.core.map.multi 多参数类型的Map实现,包括集合类型值的Map和Table
cn.hutool.core.math 提供数学计算相关封装,包括排列组合等,入口为MathUtil
cn.hutool.core.net 网络相关工具
cn.hutool.core.net.multipart 文件上传封装
cn.hutool.core.net.url URL相关工具
cn.hutool.core.stream Java8的stream相关封装
cn.hutool.core.swing Swing和awt相关封装
cn.hutool.core.swing.clipboard 剪贴板相关的工具,包括剪贴板监听等
cn.hutool.core.text 提供文本相关操作的封装,还包括Unicode工具UnicodeUtil
cn.hutool.core.text.csv 提供CSV文件读写的封装,入口为CsvUtil
规范见:https://datatracker.ietf.org/doc/html/rfc4180
cn.hutool.core.text.escape 提供各种转义和反转义实现
cn.hutool.core.text.finder 文本查找实现,包括: 查找文本中的字符(正向、反向) 查找文本中的匹配字符(正向、反向) 查找文本中的字符串(正向、反向) 查找文本中匹配正则的字符串(正向)
cn.hutool.core.text.replacer 文本替换类抽象及实现
cn.hutool.core.text.split
cn.hutool.core.thread 提供线程及高并发封装,入口为ThreadUtil
cn.hutool.core.thread.lock 的实现
cn.hutool.core.thread.threadlocal ThreadLocal相关封装
cn.hutool.core.util 提供各种工具方法,按照归类入口为XXXUtil,如字符串工具StrUtil等
cn.hutool.cron 定时任务模块,提供类Crontab表达式的定时任务,实现参考了Cron4j,同时可以支持秒级别的定时任务定义和年的定义(同时兼容Crontab、Cron4j、Quartz表达式)
定时任务模块由三部分组成: Scheduler 定时任务调度器,用于整体管理任务的增删、启停和触发运行。 Task 定时任务实现,用于定义具体的任务 CronPattern 定时任务表达式,用于定义任务触发时间 同时,提供了CronUtil工具类,维护一个全局的Scheduler。
cn.hutool.cron.listener 定时任务执行监听接口及部分实现
cn.hutool.cron.pattern 定时任务表达式解析,核心为CronPattern
cn.hutool.cron.pattern.matcher 定时任务表达式匹配器,内部使用
单一表达式使用PatternMatcher表示
PatternMatcher由7个PartMatcher组成, 分别表示定时任务表达式中的7个位置:
cn.hutool.cron.pattern.parser 定时任务表达式解析器,内部使用
cn.hutool.cron.task 定时任务中作业的抽象封装和实现,包括Runnable实现和反射实现
Task表示一个具体的任务,当满足时间匹配要求时,会执行Task.execute()方法。
cn.hutool.cron.timingwheel 时间轮实现,重写了kafka的TimingWheel
时间轮一般会实现成一个环形结构,类似一个时钟,分为很多槽,一个槽代表一个时间间隔,每个槽使用双向链表存储定时任务。指针周期性地跳动,跳动到一个槽位,就执行该槽位的定时任务。
cn.hutool.crypto 加密解密模块,实现了对JDK中加密解密算法的封装,入口为SecureUtil,实现了:
cn.hutool.crypto.asymmetric 非对称加密的实现,包括RSA等
cn.hutool.crypto.digest 摘要加密算法实现,入口为DigestUtil
cn.hutool.crypto.digest.mac HMAC,全称为“Hash Message Authentication Code”,中文名“散列消息鉴别码”
主要是利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。
一般的,消息鉴别码用于验证传输于两个共 同享有一个密钥的单位之间的消息。
HMAC 可以与任何迭代散列函数捆绑使用。MD5 和 SHA-1 就是这种散列函数。HMAC 还可以使用一个用于计算和确认消息鉴别值的密钥。
cn.hutool.crypto.digest.otp OTP 是 One-Time Password的简写,表示一次性密码。
cn.hutool.crypto.symmetric 对称加密算法实现,包括AES、DES、DESede等
cn.hutool.crypto.symmetric.fpe
cn.hutool.db Hutool-db是一个在JDBC基础上封装的数据库操作工具类,通过包装,使用ActiveRecord思想操作数据库。
在Hutool-db中,使用Entity(本质上是个Map)代替Bean来使数据库操作更加灵活,同时提供Bean和Entity的转换提供传统ORM的兼容支持。
cn.hutool.db.dialect 数据库方言封装,包括数据库方言以及方言自动识别等
cn.hutool.db.dialect.impl 数据库方言实现,包括MySQL、Oracle、PostgreSQL、Sqlite3、H2、SqlServer2012等
cn.hutool.db.ds 数据源封装,对各类数据库连接池的封装
cn.hutool.db.ds.bee BeeCP封装 见:https://github.com/Chris2018998/BeeCP
cn.hutool.db.ds.c3p0 C3P0封装
cn.hutool.db.ds.dbcp DBCP封装
cn.hutool.db.ds.druid Druid封装
cn.hutool.db.ds.hikari Hikari封装
cn.hutool.db.ds.jndi JNDI封装
cn.hutool.db.ds.pooled Hutool对连接池的简单实现
cn.hutool.db.ds.simple JDBC中DriverManager简易封装
cn.hutool.db.ds.tomcat Tomcat-Pool封装
cn.hutool.db.handler JDBC结果集(ResultSet)转换封装,通过实现RsHandler接口,将ResultSet转换为我们想要的数据类型
cn.hutool.db.meta JDBC数据表元数据信息封装,包括表结构、列信息的封装,入口为MetaUtil
cn.hutool.db.nosql NoSQL封装,包括Redis和MongoDB等数据库操作的封装
cn.hutool.db.nosql.mongo MongoDB数据库操作的封装
cn.hutool.db.nosql.redis Redis(Jedis)数据库操作的封装
cn.hutool.db.sql SQL语句和Statement构建封装
cn.hutool.db.transaction 事务相关类和操作
cn.hutool.dfa DFA全称为:Deterministic Finite Automaton,即确定有穷自动机。
解释起来原理其实也不难,就是用所有关键字构造一棵树,然后用正文遍历这棵树,遍历到叶子节点即表示文章中存在这个关键字。
我们暂且忽略构建关键词树的时间,每次查找正文只需要O(n)复杂度就可以搞定。
cn.hutool.extra 由于Hutool的原则是不依赖于其它配置文件,但是很多时候我们需要针对第三方非常棒的库做一些工具类化的支持,因此Hutoo-extra包主要用于支持第三方库的工具类支持。
cn.hutool.extra.cglib Cglib库方法封装
cn.hutool.extra.compress 基于commons-compress的压缩解压封装
支持包括:gzip, bzip2, xz, lzma, Pack200, DEFLATE, Brotli, DEFLATE64, ZStandard and Z, the archiver formats are 7z,
ar, arj, cpio, dump, tar and zip等格式。
cn.hutool.extra.compress.archiver 基于commons-compress的打包(压缩)封装
cn.hutool.extra.compress.extractor 基于commons-compress的解包(解压缩)封装
cn.hutool.extra.emoji 基于https://github.com/vdurmont/emoji-java的Emoji表情工具类
cn.hutool.extra.expression 表达式语言引擎封装
cn.hutool.extra.expression.engine 表达式语言引擎封装
cn.hutool.extra.expression.engine.aviator Aviator引擎封装,见:https://github.com/killme2008/aviatorscript
cn.hutool.extra.expression.engine.jexl Jexl3引擎封装,见:https://github.com/apache/commons-jexl
cn.hutool.extra.expression.engine.jfireel JfireEL引擎封装
见:https://gitee.com/eric_ds/jfireEL
cn.hutool.extra.expression.engine.mvel MVEL (MVFLEX Expression Language)引擎封装
见:https://github.com/mvel/mvel
cn.hutool.extra.expression.engine.rhino rhino引擎封装
见:https://github.com/mozilla/rhino
cn.hutool.extra.expression.engine.spel Spring-Expression引擎封装
见:https://github.com/spring-projects/spring-framework/tree/master/spring-expression
cn.hutool.extra.ftp 基于Apache Commons Net封装的FTP工具
cn.hutool.extra.mail 邮件封装,基于javax-mail库,入口为MailUtil
cn.hutool.extra.pinyin 拼音工具封装,入口为PinyinUtil
cn.hutool.extra.pinyin.engine 拼音具体实现
cn.hutool.extra.pinyin.engine.bopomofo4j 封装了Bopomofo4j的引擎。
cn.hutool.extra.pinyin.engine.houbbpinyin 封装了 Pinyin 的引擎。
cn.hutool.extra.pinyin.engine.jpinyin 封装了Jpinyin的引擎。
cn.hutool.extra.pinyin.engine.pinyin4j 封装了Pinyin4j的引擎。
cn.hutool.extra.pinyin.engine.tinypinyin 封装了TinyPinyin的引擎。
cn.hutool.extra.qrcode 二维码封装,基于zxing库,入口为QrCodeUtil
cn.hutool.extra.servlet Servlet封装,包括Servlet参数获取、文件上传、Response写出等,入口为ServletUtil
cn.hutool.extra.spring Spring相关工具封装
cn.hutool.extra.ssh Jsch封装,包括端口映射、SFTP封装等,入口为JschUtil
cn.hutool.extra.template 第三方模板引擎封装,提供统一的接口用于适配第三方模板引擎
cn.hutool.extra.template.engine 第三方模板引擎实现
cn.hutool.extra.template.engine.beetl Beetl实现,模板引擎介绍见:http://ibeetl.com/
cn.hutool.extra.template.engine.enjoy Jfinal家的Enjoy模板引擎实现,见:https://jfinal.com/doc/6-1
cn.hutool.extra.template.engine.freemarker Freemarker实现
见:https://freemarker.apache.org/
cn.hutool.extra.template.engine.jetbrick jetbrick-template实现,模板引擎介绍见:https://github.com/subchen/jetbrick-template-2x
cn.hutool.extra.template.engine.jetbrick.loader jetbrick-template实现,特殊资源加载器
模板引擎介绍见:https://github.com/subchen/jetbrick-template-2x
cn.hutool.extra.template.engine.rythm Rythm实现,见:http://www.rythmengine.org/
cn.hutool.extra.template.engine.thymeleaf Thymeleaf实现,见:https://www.thymeleaf.org/
cn.hutool.extra.template.engine.velocity Velocity实现
见:http://velocity.apache.org/
cn.hutool.extra.template.engine.wit Wit实现,见:http://zqq90.github.io/webit-script/
cn.hutool.extra.tokenizer 中文分词封装
通过定义统一接口,适配第三方分词引擎
cn.hutool.extra.tokenizer.engine 第三方分词引擎实现
cn.hutool.extra.tokenizer.engine.analysis Lucene-analysis分词抽象封装
项目地址:https://github.com/apache/lucene-solr/tree/master/lucene/analysis
cn.hutool.extra.tokenizer.engine.ansj Ansj分词实现