专栏名称: 养码场
养码场,一个技术人职场社交平台。 现有“养码人”80000+,覆盖JAVA/PHP/iOS/测试/运维等领域。80%级别在P6及以上,含P9技术大咖30人,技术总监和CTO 500余人。
目录
相关文章推荐
河北交通广播  ·  【992 | 提醒】今天起,可以查分了→ ·  昨天  
河北交通广播  ·  【992 | 最新】故意杀人案,警方悬赏缉凶! ·  昨天  
河北交通广播  ·  迎春花开了!附近很多地方都有,你看过了吗? ·  2 天前  
河北交通广播  ·  【992 | ... ·  2 天前  
河北交通广播  ·  【992 | ... ·  3 天前  
51好读  ›  专栏  ›  养码场

Java 程序员都应该使用一下这款强大的国产工具类库!

养码场  · 公众号  ·  · 2018-12-14 16:37

正文


今天给大家推荐一个很棒的国产工具类库:Hutool。可能有很多朋友已经知道这个类库,甚至在已经在使用了,但如果你还没有使用过,那也不妨去尝试一下。

倪升武, 同济大学硕士毕业,CSDN博客专家, GitChat达人课作者, 先后任职于eBay,爱奇艺,华为,科大讯飞, 从事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
*/

@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 工具类,慢慢丰富,最后衍生出一个类库,里面的大部分源码我相信大部分程序员都可以看得懂,也是一个很好的学习机会。



最后

养码场寒冬取暖——技术校招交流群


最近,有很多应届生来问场主:有没有校招岗位,有没有实习机会?


看到大家的需求,场主盘点了一下资源建了一个校招群,专门发布: 百家企业岗位内推,BAT大厂、一二线互联网公司校招技术岗位资源、宣讲会信息大全,还有求职技术干货大礼包!


求职不如扫码加入 #养码场技术校招交流群# 一起找工作、交流面试经验呀!


校招是一年四季的事,







请到「今天看啥」查看全文