utils工具类是每个系统都是必备的,无意中发现Hutool这个小而全的工具类库,瞬间让我眼前一亮..
工具类来自于公共方法的封装,经过不断的层层优化与使用,涉及到开发的方方面面..
关键字:工具类,Hutool
关联类:BaseFuns.java,BeanFuns.java,DateFuns.java,StrFuns.java
一、Hutool工具类库
Hutool工具类的详细解决与使用方法,请访问Hutool的官网,附有详细的介绍与工具类列表,涉及到java开发的方方面面,据作者介绍说:Hutool是经过无数程序员的使用的经验的出来的,而作者也自称是“二手程序员”:说Hutool的工具类,是来自无数程序员的分享的方法,而总结出来的
Hutool的引入:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.8</version>
</dependency>
虽然commons系列具有很多工具类库,详细可以查看:
- commons-lang3也是一个不错的工具类库,各位小伙伴们,可以根据实际选择使用
二、精益编程系统,一些特有的工具类
虽然Hutool与commons-lang3等工具类已经非常强大,但是本系统中,针对特定的系统设计,必定会有自己的一套工具类库
说明:自己特有的工具类,可能在Hutool与commons-lang3中也有一样功能的方法,但是由于有时候习惯的问题,命名等,使用的时候不知是那个,所以针对这种情况,根据自己的习惯封装一下,很有必要。
1. BaseFuns抽象类
本类主要是封装一些特有公共属性,对JSON的一些初始化方法,统一封装抛出异常的方便调用,具体部分核心方法:
// 1.2 新增,增加一个精确的唯一错误编码
protected void breaks(String msg, String code) throws Exception {
throw new BLException(msg, code);
}
// 1.3 新增一个结果弹框的信息
protected void breaksAlert(String msg) throws Exception {
throw new BLException(msg, "alert");
}
// 1.4 新增,增加一个精确的唯一错误编码+重定向redirect
protected void breaks(String msg, String code, String redirect) throws Exception {
throw new BLException(msg, code, redirect);
}
2.BeanFuncs操作Bean与json的工具类
本类在我上一个版本中,还是具有不少的方法的,后来使用了Hutool后,很多方法都删除了,毕竟Hutool有的方法,在这里就没有必要保留一样的了
本类主要的方法,是populate的赋值方法,完整实现方法,请查看该类
//F.1 赋值
public static void populate(Object bean, Map propertyMap) throws Exception {
beanUtilBean.populate(bean, propertyMap);
}
该方法将在service层中大量使用,主要是用于:json的值赋值到javaBean中,javaBean再在Dao层进行保存到数据库。
3.DateFuncs日期操作
Hutool具有完整的关于日期的工具类,所以本类专注于精益编程特有的一些应用场景,添加一些必要的方法
如精益编程有一项功能点是:当天点赞数量为最多20次,我们将用户当天点击数存放在redis中,过期时间为当天的剩余时间:
那么用户的缓存这个数量的key的过期时间为:
//<A>5.计算当前时间距离当天24:00有多少分钟
public static int todayLeftMinute() throws Exception {
Date endTime = DateFuncs.trunc(DateUtil.offsetDay(new Date(),1));
int minute = (int)((endTime.getTime() - System.currentTimeMillis())/(1000*60));
return minute;
}
4.StrFuns字符串工具类
字符串实在是太常见了,所以Hutool,commons-lang3具有大量的关于字符串的操作方法。本类主要是额外添加一下方法:
抽取模版字符
如微信的一些消息模版:“活动名称:{{name1.DATA}}
活动时间:{{time2.DATA}}
温馨提醒:{{thing4.DATA}}”
要抽取出对应的模块key:name1,time2,thing4等//<B>2.字符串${key}的解析模版,key支持.的多级取值
public static String processTemplate(String template,JSONObject params) throws Exception {
//请查看精益编程源码
}
字符串${key}的解析模版,key支持.的多级取值
短信模块,根据${key},根据参数,自动匹配,形成特定的短信public static String processTemplate(String template,JSONObject params) throws Exception {
//...请查看精益编程源码
}
5.JSONFuncs工具类
由于精益编程框架,采用Fastjson2作为参数与结果的传输介质,所以有关json的方法封装将大量使用,这个工具类也是特别多;
Fastjson2的springboot的序列化与反序列化,请查看该文章。
该类详细方法将不断更新,请参考文档:JSONFuncs工具类