精益编程框架

开发文档
点击登录,精彩内容等着你

全面拥抱hutool工具类

系列文档

关联类名: hutoolDateFuns.javaStrFuns.java

utils工具类是每个系统都是必备的,无意中发现Hutool这个小而全的工具类库,瞬间让我眼前一亮..
工具类来自于公共方法的封装,经过不断的层层优化与使用,涉及到开发的方方面面..


关键字:工具类,Hutool
关联类:BaseFuns.java,BeanFuns.java,DateFuns.java,StrFuns.java

一、Hutool工具类库

Hutool工具类的详细解决与使用方法,请访问Hutool的官网,附有详细的介绍与工具类列表,涉及到java开发的方方面面,据作者介绍说:Hutool是经过无数程序员的使用的经验的出来的,而作者也自称是“二手程序员”:说Hutool的工具类,是来自无数程序员的分享的方法,而总结出来的

Hutool的引入:

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

虽然commons系列具有很多工具类库,详细可以查看:

  • commons-lang3也是一个不错的工具类库,各位小伙伴们,可以根据实际选择使用

二、精益编程系统,一些特有的工具类

虽然Hutool与commons-lang3等工具类已经非常强大,但是本系统中,针对特定的系统设计,必定会有自己的一套工具类库

说明:自己特有的工具类,可能在Hutool与commons-lang3中也有一样功能的方法,但是由于有时候习惯的问题,命名等,使用的时候不知是那个,所以针对这种情况,根据自己的习惯封装一下,很有必要。

1. BaseFuns抽象类

本类主要是封装一些特有公共属性,对JSON的一些初始化方法,统一封装抛出异常的方便调用,具体部分核心方法:

  1. // 1.2 新增,增加一个精确的唯一错误编码
  2. protected void breaks(String msg, String code) throws Exception {
  3. throw new BLException(msg, code);
  4. }
  5. // 1.3 新增一个结果弹框的信息
  6. protected void breaksAlert(String msg) throws Exception {
  7. throw new BLException(msg, "alert");
  8. }
  9. // 1.4 新增,增加一个精确的唯一错误编码+重定向redirect
  10. protected void breaks(String msg, String code, String redirect) throws Exception {
  11. throw new BLException(msg, code, redirect);
  12. }

2.BeanFuncs操作Bean与json的工具类

本类在我上一个版本中,还是具有不少的方法的,后来使用了Hutool后,很多方法都删除了,毕竟Hutool有的方法,在这里就没有必要保留一样的了

本类主要的方法,是populate的赋值方法,完整实现方法,请查看该类

  1. //F.1 赋值
  2. public static void populate(Object bean, Map propertyMap) throws Exception {
  3. beanUtilBean.populate(bean, propertyMap);
  4. }

该方法将在service层中大量使用,主要是用于:json的值赋值到javaBean中,javaBean再在Dao层进行保存到数据库。

3.DateFuncs日期操作

Hutool具有完整的关于日期的工具类,所以本类专注于精益编程特有的一些应用场景,添加一些必要的方法
如精益编程有一项功能点是:当天点赞数量为最多20次,我们将用户当天点击数存放在redis中,过期时间为当天的剩余时间:

那么用户的缓存这个数量的key的过期时间为:

  1. //<A>5.计算当前时间距离当天24:00有多少分钟
  2. public static int todayLeftMinute() throws Exception {
  3. Date endTime = DateFuncs.trunc(DateUtil.offsetDay(new Date(),1));
  4. int minute = (int)((endTime.getTime() - System.currentTimeMillis())/(1000*60));
  5. return minute;
  6. }

4.StrFuns字符串工具类

字符串实在是太常见了,所以Hutool,commons-lang3具有大量的关于字符串的操作方法。本类主要是额外添加一下方法:

  1. 抽取模版字符
    如微信的一些消息模版:“活动名称:{{name1.DATA}}
    活动时间:{{time2.DATA}}
    温馨提醒:{{thing4.DATA}}”
    要抽取出对应的模块key:name1,time2,thing4等

    1. //<B>2.字符串${key}的解析模版,key支持.的多级取值
    2. public static String processTemplate(String template,JSONObject params) throws Exception {
    3. //请查看精益编程源码
    4. }
  2. 字符串${key}的解析模版,key支持.的多级取值
    短信模块,根据${key},根据参数,自动匹配,形成特定的短信

    1. public static String processTemplate(String template,JSONObject params) throws Exception {
    2. //...请查看精益编程源码
    3. }

5.JSONFuncs工具类

由于精益编程框架,采用Fastjson2作为参数与结果的传输介质,所以有关json的方法封装将大量使用,这个工具类也是特别多;
Fastjson2的springboot的序列化与反序列化,请查看该文章。

该类详细方法将不断更新,请参考文档:JSONFuncs工具类