大家好,我是你们的导师, 我会坚持每天给大家整理一些干货内容(当然周末也要允许老师休息一下哈)。

今天给大家分享一个很棒的Java工具类库:Hutool。可能有很多朋友已经知道这个类库了,甚至在已经在使用了,如果你还没有使用过,那不妨去尝试一下,我们项目组目前也在用这个。这篇文章来简单介绍一下这个类库。

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

Hutool是Hu + tool的自造词,前者是作者致敬他的“前任公司”,后者为工具之意,谐音“糊涂”,寓意追求“万事都作糊涂观,无所谓失,无所谓得”的境界。看来写这个类库的作者(不止一个)也是文艺青年啊。

Hutool是一个Java工具包,它可以帮助我们简化每一行代码,减少每一个方法,让Java语言也可以“甜甜的”。所以很多人称之为:小甜甜。

我们使用该工具类,只需要引入它的依赖即可。

<dependency><groupId>cn.hutoolgroupId><artifactId>hutool-allartifactId><version>4.2.1version>dependency>

可能很多国内程序员都不喜欢看官方文档,因为基本上都是英文的,其实我还是鼓励大家去看英文文档的。但这个工具类的参考文档和API文档全是中文的,中文的,中文的,可以说能满足很大一部分开发人员的需求了。

先举一个官方提供的例子,模拟一下表单提交,来一起感受一下 Hutool 的便捷。

public class Demo {public static void main(String[] args) {       File file = new File("D:\\face.jpg");// 第一种方式:自定义构建表单       HttpRequest request = HttpRequest               .post("http://ip:port/xxxx")               .form("file", file)               .form("fileType", "jpg");       HttpResponse response = request.execute();       System.out.println(response.body());// 第二种方式:使用统一表单,Http模块会自动识别参数类型,并完成上传       HashMap paramMap = new HashMap<>();       paramMap.put("author", "倪升武");       paramMap.put("wechat", "程序员私房菜");       String result = HttpUtil.post("http://ip:port/xxxx", paramMap);       System.out.println(result);   }}

当然,Hutool 还有其他很多工具,比如对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时也提供以下组件:

上文导入的依赖是 hutool-all,意味导入所有的模块,当然,我们也可以根据实际需要对上图中的每个模块进行单独的依赖导入。由于篇幅原因,我简单介绍其中两个模块,其他的模块大家可以去看看官方文档,去尝试一下,还是有很多东西值得我们去学习的。

HtmlUtil(HTML工具类)

我是蛮喜欢这个工具类的,用的最多的就是 HtmlUtil.encode,可以将一些字符转化为安全字符,防止xss注入和SQL注入,比如我之前做网站的时候就用到了这个来处理评论的提交。

comment.setContent(HtmlUtil.encode(content));

它会转义文本中的HTML字符为安全的字符,这样比较安全。另外,HtmlUtil 还提供了以下方法,有兴趣的朋友可以去试一下。

CronUtil(定时任务)

我们使用 CronUtil 时,只需要在 src/main/resources/config 下放入 cron.setting 文件(默认是这个路径的这个文件),然后在文件中放入定时规则,如:

[com.example.hutool.cron]TimerTest.runTask = */2 * * * * ?

这表示:每隔 2 秒钟执行一遍 com.example.hutool.cron 包下的 TimerTest 类中的 runTask 方法。这就很方便了,我在项目启动时就把定时器打开即可,假如你是 Spring Boot 工程,就可以这么做:

/*** 项目初始化配置* @author shengwu ni* @date 2018-12-06*/@Componentpublic class InitConfig {private static final Logger LOGGER = LoggerFactory.getLogger(InitConfig.class);@PostConstructpublic void initTimer() {       LOGGER.info("项目启动,开启Hutool定时任务……");       CronUtil.setMatchSecond(true);       CronUtil.start();   }}

这样就会每隔 2 秒中去执行一下目标方法。代码中的 setMatchSecond(true) 是设置支持秒级别定时任务,这么做是为了兼容 Quartz 表达式,5位表达式、6位表达式都兼容。可以说是很棒了。

该类库的其他工具类我就不一一介绍了,感兴趣的读者可以自己去官网看一下,我觉得最吸引人的还是非常全的中文文档和API文档,建议大家去阅读一下,相信你也会喜欢上这个国产类库。

我为什么推荐大家都去尝试一下这个类库呢?倒不是说推荐大家一定去使用,我们可以去体验一下该工具类是否真的可以简化我们的编码。这个工具类库一开始,其实就是项目中普通的 Util 工具类,慢慢丰富,最后衍生出一个类库,里面的大部分源码我相信大部分程序员都可以看得懂,也是一个很好的学习机会。

好了,今天老师就跟大家分享这么多。

java cron表达式_Java 程序员都应该去使用一下这款强大的国产工具类库相关推荐

  1. Java程序员的典型工作过程有哪些_Java程序员都要经历哪些阶段

    原标题:Java程序员都要经历哪些阶段 程序员从菜鸟到优秀的过程是需要时间,经验,不断的进阶,小编和大家一起看看每个阶段都要经历哪些成长阵痛: 没有防卫 这个阶段很快就会过去,因为有无数的书本和&qu ...

  2. java ide排名_Java程序员的困惑,Java IDE到底怎么选

    Eclipse和IntelliJ IDEA可以说是程序员们最常用的两个IDE开发工具了.IntelliJ IDEA被认为是目前Java开发效率最快的IDE工具,Eclipse却是大多数Java程序员使 ...

  3. resultset需要关闭吗_Java程序员都需要懂的「反射」

    前言 只有光头才能变强.文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 今天来简单写一下Java的反射.本来没打算写反射这 ...

  4. java的六大_java程序员必备的六大工具!

    原标题:java程序员必备的六大工具! Java程序员都会有套工具来应对工作上的挑战.多年来,Java 程序员使用软件来完成他们的工作.有很多工具对他们是有用的,不过对于初入行的人员来说,寻找合适的工 ...

  5. 爬了知乎200万数据,图说程序员都喜欢去哪儿工作~

    因为最近和朋友吃饭,大家都到了大三季,都在纠结自己该以哪里作为自己职业发展的起点?也想看看自己的背景,能不能找到靠谱的师哥师姐帮忙,那么师哥师姐都在哪里发光发亮呢? 我当时也是午休的时候想到,知乎有那 ...

  6. java 招聘要求_Java程序员如何进阶,一般招聘都有哪些要求?

    作为当前市场上应用领域最广.人才需求最大的编程语言,Java一直是人们入行IT行业的选择.然而,随着大批量的人涌入Java开发行业,企业的招聘门槛也在无形中抬高,提升专业技能成为新手Java程序员实现 ...

  7. java 排名相同_Java程序员十年面试经验,助你成为offer收割机

    关于面试 其实关于面试总结这块,小编也看过不少文章,但是大部分都是关于面试题以及面试中的问题所谈.但是对于一个不擅长找工作的人来说,其实在简历制作这一块很重要.因为简历没写好的话,连面试邀请都没,何谈 ...

  8. java表格树_Java程序员值得拥有的TreeMap指南

    吃饭间隙,迷上了<吐槽大会>,一集一集地刷啊,觉得这些嘉宾真的挺有勇气的,敢于直面自己的惨淡槽点.于是,同学们看到了,我作为一个技术博主,也受到了"传染",不,受到了& ...

  9. erp开发和java开发区别_Java程序员求职必学:Spring boot学习指南!

    黑马程序员上海中心 学姐微信:CZBKSH 关注 咳咳,今天学姐就来和你们说说Spring对于Java程序员的重要性. 首先,Spring 官网首页是这么介绍自己的--"Spring: th ...

最新文章

  1. js实现页面跳转的几种方式
  2. html label标签 ie6,说说HTML5中label标签的可访问性问题
  3. IPFS + 区块链 系列】 入门篇 - IPFS + Ethereum (中篇)-js-ipfs-api - 图片上传到IPFS以及下载
  4. 重点客户销售数据分析python_药品销售数据分析--python
  5. CUDA Eclipse Nsight 不能打开工程 an error has occurred see the log file
  6. Docker版本Jenkins的使用
  7. 作者:谢华美(1976-),男,就职于中国人民银行征信中心数据部
  8. 项目管理学习总结(13)——高效能技术Leader的30条军规
  9. 佳信客服接口文档 REST API
  10. Docker学习笔记1
  11. 插件化Amigo-1
  12. 查询MYSQL数据库中所有的表
  13. 傅盛认知三部曲之二:管理本质就是认知管理
  14. JavaScript中DOM对象的详解
  15. 阿里巴巴矢量图的使用方法详细教程
  16. 关键字搜索aliexpress商品API接口(速卖通关键词搜索商品接口)
  17. 英语中六大从句用法总结
  18. 著名面试题: 如何实现数组去重? 假设有数组 array = [1,5,2,3,4,2,3,1,3,4] 你要写一个函数 unique,使得 unique(array) 的值为 [1,5,2,3,4]
  19. 数据分析 | Pandas 200道练习题,每日10道题,学完必成大神(2)
  20. JAVA解决OPTIONS请求问题:跨域时ajax发送两次请求,其中options预请求参数为null及其解决方案

热门文章

  1. co11n——生产订单确认的BAPI
  2. SAP同一公司不同工厂间物料转储方案比较
  3. BAPI:KBPP_EXTERN_UPDATE_CO, TCODE:CJ30/CJ40
  4. 格力的“阵痛”与“头痛”
  5. 混凝土静力受压弹性模量试验计算公式_2019年度水运材料考试大纲微试验
  6. 链接oracle spatial,oracle spatial初试
  7. mate 10android o主题,Mate10不仅硬件强,还有安卓8.0
  8. php给图片加图片水印,php给图片添加文字或图片水印实现代码
  9. java实现123n_用Java编程 :输入一个正整数n,输出n!的值。 其中n!=1*2*3*…*n。 求高手指点...
  10. Python中self的用法