這不是標題黨,今天給你們推薦一個很棒的國產工具類庫: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 工具類,慢慢豐富,最後衍生出一個類庫,裏面的大部分源碼我相信大部分程序員均可以看得懂,也是一個很好的學習機會。再說了,個人哪一篇文章讓你失望過?(得瑟臉)
讀完這篇文章,相信你會轉發給更多的人。