一个非常好用的Jar,可以帮你省去整合Utils的时间

2025-05-29 0 86

一个非常好用的Jar,可以帮你省去整合Utils的时间

前段时间,阿粉在公司做功能的时候,出现了一个比较别致的需求,需要在页面上显示辛丑年x月x日,于是阿粉就在想,这个天干地支这玩意是不是有人做过封装,能不能整合到Utils里面,以后都一起使用吧,于是就在 Google 上开始搜索有关的内容,结果不搜不知道,一搜吓一跳,直接出现了一个完整的封装好的 Jar 可以直接使用,于是阿粉就把这个 Jar 包的依赖加入到了自己的项目中,而且去源码中扒拉了一下,感觉里面东西真心不错,于是决定分享给大家一下。

Hutool

一个封装了很多功能的 Jar ,阿粉要不是因为需求,估计可能很久不都不一定知道他,我们先来看看阿粉的需求是什么样子的。

一个非常好用的Jar,可以帮你省去整合Utils的时间

阿粉之前的需求是让在后端返回一个所谓农历的干支纪年,而这个东西就不是那么容易了呀,要自己去找一些Utils的话,大家可以看一下。

一个非常好用的Jar,可以帮你省去整合Utils的时间

需要我们去专门弄这个么Utils,然后去计算干支纪年,这是不是有点麻烦了,而我们的 Hutool 这个 Jar 就非常的简单了,

  1. ChineseDatechineseDate=newChineseDate(date);
  2. Stringcyclical=chineseDate.getCyclical();

上面的代码是获取干支纪年,比如他还有获取节日和生效的:

  1. /**
  2. *获得节日
  3. *
  4. *@return获得农历节日
  5. */
  6. publicStringgetFestivals(){
  7. returnStrUtil.join(",",LunarFestival.getFestivals(this.year,this.month,day));
  8. }
  9. /**
  10. *获得年份生肖
  11. *
  12. *@return获得年份生肖
  13. */
  14. publicStringgetChineseZodiac(){
  15. returnZodiac.getChineseZodiac(this.year);
  16. }

如果你只是认为这个 Jar 只能给你提供这一种帮助那就大错特错了,他内部可是封装了很多很多的方法的。

而且是可以选择引入包,如果你想用 hutool 的所有的 Jar 就可以引入所有的依赖:

  1. <dependency>
  2. <groupId>cn.hutool</groupId>
  3. <artifactId>hutool-all</artifactId>
  4. <version>5.5.2</version>
  5. </dependency>

如果说你只想用其中的某一项功能的时候,那么你就可以挑选其他的 Jar 依赖引入,比如:

  1. <dependency>
  2. <groupId>cn.hutool</groupId>
  3. <artifactId>hutool-core</artifactId>
  4. <version>5.6.5</version>
  5. </dependency>

我们就看看 hutool 都有哪些比较牛掰的 Jar 。

  • hutool-aop JDK动态代理封装,提供非IOC下的切面支持
  • hutool-bloomFilter 布隆过滤,提供一些Hash算法的布隆过滤
  • hutool-cache 简单缓存实现
  • hutool-core 核心,包括Bean操作、日期、各种Util等
  • hutool-cron 定时任务模块,提供类Crontab表达式的定时任务
  • hutool-crypto 加密解密模块,提供对称、非对称和摘要算法封装
  • hutool-db JDBC封装后的数据操作,基于ActiveRecord思想
  • hutool-extra 扩展模块,对第三方封装(模板引擎、邮件、Servlet、二维码、Emoji、FTP、分词等)
  • hutool-http 基于HttpUrlConnection的Http客户端封装
  • hutool-log 自动识别日志实现的日志门面
  • hutool-setting 功能更强大的Setting配置文件和Properties封装
  • hutool-script 脚本执行封装,例如Javascript
  • hutool-system 系统参数调用封装(JVM信息等)
  • hutool-json JSON实现
  • hutool-captcha 图片验证码实现
  • hutool-poi 针对POI中Excel和Word的封装
  • hutool-socket 基于Java的NIO和AIO的Socket封装

我们挑几个可以比较常用,而且比较放心的,相对于公司的系统来说,肯定很多人会说,这种 Jar 会不会不安全呢?毕竟互联网时代,安全性要求是非常重要的,既然我们不用那些涉及到一些安全的用例的话,基础的我们还是可以拿过来使用的,不是么?

比如说我们最经典的转型,相信大家肯定使用过 HttpServletRequest ,也就是 HttpServletRequest 获取的Parameter ,然后再转型成我们所需要的类型就像下面:

  1. HttpServletRequest.getParameter("")

然后我们就得先转换成 String ,然后再去转换成我们想要的类型。

而在 Hutool 里面,就有一个类提供给我们使用,Convert 类。

转换为字符串:

  1. 转换为字符串:
  2. long[]b={1,2,3,4,5};
  3. StringbStr=Convert.toStr(b);
  4. System.out.println(bStr);

Convert.convert(Class, Object)方法可以将任意类型转换为指定类型,Hutool中预定义了许多类型转换,例如转换为URI、URL、Calendar等等,这些类型的转换都依托于ConverterRegistry类。

在源码里面也是有注释的,我们肯定去扒拉一下看看源码不是么?

  1. /**
  2. *转换值为指定类型
  3. *
  4. *@param<T>目标类型
  5. *@paramtype类型
  6. *@paramvalue值
  7. *@return转换后的值
  8. *@since4.0.0
  9. *@throwsConvertException转换器不存在
  10. */
  11. publicstatic<T>Tconvert(Class<T>type,Objectvalue)throwsConvertException{
  12. returnconvert((Type)type,value);
  13. }
  14. /**
  15. *转换值为指定类型
  16. *
  17. *@param<T>目标类型
  18. *@paramreference类型参考,用于持有转换后的泛型类型
  19. *@paramvalue值
  20. *@return转换后的值
  21. *@throwsConvertException转换器不存在
  22. */
  23. publicstatic<T>Tconvert(TypeReference<T>reference,Objectvalue)throwsConvertException{
  24. returnconvert(reference.getType(),value,null);
  25. }

不得不说,这玩意还真好用,而且你如果在百度上去搜索关于这方面的东西,有些时候还会发现,有人会把里面的源码给拆出来,自己封装成 Utils ,这种可能是觉得引入外面的 Jar 不是很靠谱,于是就把 Jar 里面的方法什么的都给重新封装了一下,作为自己用。

一个非常好用的Jar,可以帮你省去整合Utils的时间

上面这部分阿粉接了个图,发现公司的某个项目中就是直接把 Conver 这个类直接拷贝了一份,然后当做了自己的类进行调用,不得不说,佩服!

提供的算法

Hutool 不光提供了一些基础工具类的使用,同时还提供了一些算法,比如说:HashUtil

  • additiveHash 加法hash
  1. publicstaticintadditiveHash(Stringkey,intprime){
  2. inthash,i;
  3. for(hash=key.length(),i=0;i<key.length();i++){
  4. hash+=key.charAt(i);
  5. }
  6. returnhash%prime;
  7. }
  • 旋转hash
  1. publicstaticintrotatingHash(Stringkey,intprime){
  2. inthash,i;
  3. for(hash=key.length(),i=0;i<key.length();++i){
  4. hash=(hash<<4)^(hash>>28)^key.charAt(i);
  5. }
  6. //使用:hash=(hash^(hash>>10)^(hash>>20))&mask;
  7. //替代:hash%=prime;
  8. //return(hash^(hash>>10)^(hash>>20));
  9. returnhash%prime;
  10. }
  • 一次一个hash
  1. publicstaticintoneByOneHash(Stringkey){
  2. inthash,i;
  3. for(hash=0,i=0;i<key.length();++i){
  4. hash+=key.charAt(i);
  5. hash+=(hash<<10);
  6. hash^=(hash>>6);
  7. }
  8. hash+=(hash<<3);
  9. hash^=(hash>>11);
  10. hash+=(hash<<15);
  11. //return(hash&M_MASK);
  12. returnhash;
  13. }

工具类中融合了各种hash算法,不单单是这么几种,还有好多,像:RS算法hash、JS算法、DEK算法、DJB算法。。。

总之,都是比较不错的呀,至少比我们去百度上面搜索的这种靠谱呀。

而且还包括了加密解密,SecureUtil 其中有对称加密-SymmetricCrypto,也有非对称加密-AsymmetricCrypto。

非常多的内容值得大家去挖掘,如果想看官方文档,阿粉也放给大家,大家可以去看看!

Hutool官方文档(https://hutool.cn/docs/)

总结

作为一名开发人员,保证开发效率才是第一位的,善于使用工具,对你的开发进度是非常有帮助的,你学会了么?

原文链接:https://mp.weixin.qq.com/s/0G_kyeQ0YpQiCxMPMt4SWg

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 一个非常好用的Jar,可以帮你省去整合Utils的时间 https://www.kuaiidc.com/94088.html

相关文章

发表评论
暂无评论