这不是标题党,今天给你们推荐一个很棒的国产工具类库:Hutool。可能有不少朋友已经知道这个类库了,甚至在已经在使用了,若是你尚未使用过,那不妨去尝试一下,咱们项目组目前也在用这个。这篇文章来简单介绍一下这个类库。程序员
官网地址:https://www.hutool.cn/安全
Hutool是Hu + tool的自造词,前者是做者致敬他的“前任公司”,后者为工具之意,谐音“糊涂”,寓意追求“万事都做糊涂观,无所谓失,无所谓得”的境界。看来写这个类库的做者(不止一个)也是文艺青年啊。xss
Hutool是一个Java工具包,它能够帮助咱们简化每一行代码,减小每个方法,让Java语言也能够“甜甜的”。因此不少人称之为:小甜甜。工具
咱们使用该工具类,只须要引入它的依赖便可。post
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.2.1</version>
</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<String, Object> 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
*/
@Component
public class InitConfig {
private static final Logger LOGGER = LoggerFactory.getLogger(InitConfig.class);
@PostConstruct
public void initTimer() {
LOGGER.info("项目启动,开启Hutool定时任务……");
CronUtil.setMatchSecond(true);
CronUtil.start();
}
}
这样就会每隔 2 秒中去执行一下目标方法。代码中的 setMatchSecond(true) 是设置支持秒级别定时任务,这么作是为了兼容 Quartz 表达式,5位表达式、6位表达式都兼容。能够说是很棒了。
该类库的其余工具类我就不一一介绍了,感兴趣的读者能够本身去官网看一下,我以为最吸引人的仍是很是全的中文文档和API文档,建议你们去阅读一下,相信你也会喜欢上这个国产类库。
我为何推荐你们都去尝试一下这个类库呢?倒不是说推荐你们必定去使用,咱们能够去体验一下该工具类是否真的能够简化咱们的编码。这个工具类库一开始,其实就是项目中普通的 Util 工具类,慢慢丰富,最后衍生出一个类库,里面的大部分源码我相信大部分程序员均可以看得懂,也是一个很好的学习机会。再说了,个人哪一篇文章让你失望过?(得瑟脸)
读完这篇文章,相信你会转发给更多的人。