技术 | 用糊涂工具库加速你的Java开发效率
共 3430字,需浏览 7分钟
·
2020-12-11 20:34
来了来了,Hutool工具库!
Hutool是什么?
Hutool是一个Java工具包类库,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类。
Hutool官网:https://hutool.cn/
GitHub地址:https://github.com/looly/hutool
为什么用Hutool?
Java语言虽然自带了很多的工具类,但是相对于Scala等高级语言来说,封装的工具还不够丰富和完善,远远不能满足我们的需求。因此,出现了各种各样的第三方类库,比如知名的guava、apache-common-utils,虽然这些类库的实现很优秀,但作为工具类库来说,工具的种类还不够多,通常我们还要搭配其他第三方类库使用(比如操作Excel的库POI)。
Hutool如何提升我们的开发效率?
以前:打开搜索引擎 => 搜“Java如何发送邮件” => 打开几篇博客 => 选择一个看似优秀的实现 => 复制粘贴 => 改改就用 现在:引入Hutool => 调用MailUtil.sendText方法
如何使用Hutool?
<dependency>
<groupId>cn.hutoolgroupId>
<artifactId>hutool-allartifactId>
<version>5.4.4version>
dependency>
compile 'cn.hutool:hutool-all:5.4.4'
然后就可以参照文档去使用啦,文档地址:https://hutool.cn/docs/#/
Hutool的功能
Hutool的功能非常大而全,常用的工具有:
1. 日期工具
通过DateUtil类,提供高度便捷的日期访问、处理和转换方式。
2. HTTP客户端
通过HttpUtil对HTTP客户端的封装,实现便捷的HTTP请求,并简化文件上传操作。
3. 转换工具
通过Convert类中的相应静态方法,提供一整套的类型转换解决方案,并通过ConverterRegistry工厂类自定义转换。
4. 配置文件工具(Setting)
通过Setting对象,提供兼容Properties文件的更加强大的配置文件工具,用于解决中文、分组等JDK配置文件存在的诸多问题。
当然还有更多组件,如下:
模块 | 介绍 |
---|---|
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-all方式引入所有模块。
写在最后
最后,给大家一点建议。
不要仅仅把Hutool当做一个工具去使用,用久了会把人用傻的!
有时间的话,应该阅读Hutool的源码,学习其各种工具类的优秀实现,培养自己的代码能力。
/**
* 手机号工具类
*/
public class PhoneUtil {
/**
* 座机号码
*/
private static final Pattern TEL = Pattern.compile("0\\d{2,3}-[1-9]\\d{6,7}");
/**
* 验证是否为手机号码(中国)
*
* @param value 值
* @return 是否为手机号码(中国)
* @since 5.3.11
*/
public static boolean isMobile(CharSequence value) {
return Validator.isMatchRegex(PatternPool.MOBILE, value);
}
...
}
—————END—————
喜欢本文的朋友,欢迎关注公众号 程序员哆啦A梦,收看更多精彩内容
点个[在看],是对小达最大的支持!
如果觉得这篇文章还不错,来个【分享、点赞、在看】三连吧,让更多的人也看到~