最近公司的項目裡用到了hutools這個工具包,發現這個類庫對於大部分需要用到的工具類真的是無所不包,用起來大大提升了自身的開發效率,加班也越來越少了,用起來真的就一個字-爽!huttols工具類庫囊括了json轉換工具類、集合工具類、加解密工具類、JWT工具類、數學計算工具類、AOP工具類、定時任務、布隆過濾器以及二維碼生成工具類和http工具類等一系列的開發人員在項目開發過程中需要用到的工具類。作為一名Java開發人員,如此利好Java開發人員的工具類庫,當然值得我拿出來分享一番,希望自己的讀者朋友都能用起來,儘可能地在工作中提高自己的開發效率,做到每天呼啦啦準時打卡下班Hutool是一個非常受歡迎的開源工具類庫項目,目前在gitee上的star數已經達到了16.4k,可見其在Java開發人員中的受歡迎程度。Hutool目前的最新版本為5.17.7。下面筆者參照官網對hutool這個工具類庫做個詳細的介紹
Hutool簡介Hutool是一個小而全的Java工具類庫,通過靜態方法封裝,降低相關API的學習成本,提高工作效率,使Java擁有函數式語言般的優雅,讓Java語言也可以「甜甜的」。
Hutool中的工具方法來自每個用戶的精雕細琢,它涵蓋了Java開發底層代碼中的方方面面,它既是大型項目開發中解決小問題的利器,也是小型項目中的效率擔當;
Hutool是項目中「util」包友好的替代,它節省了開發人員對項目中公用類和公用工具方法的封裝時間,使開發專注於業務,同時可以最大限度的避免封裝不完善帶來的bug。
Hutool名稱的由來Hutool = Hu + tool,是原公司項目底層代碼剝離後的開源庫,「Hu」是公司名稱的表示,tool表示工具。Hutool諧音「糊塗」,一方面簡潔易懂,一方面寓意「難得糊塗」。
Hutool如何改變我們的coding方式Hutool的目標是使用一個工具方法代替一段複雜代碼,從而最大限度的避免「複製粘貼」代碼的問題,徹底改變我們寫代碼的方式。
以計算MD5為例:
【以前】打開搜尋引擎 -> 搜「Java MD5加密」 -> 打開某篇博客-> 複製粘貼 -> 改改好用
【現在】引入Hutool -> SecureUtil.md5()
Hutool的存在就是為了減少代碼搜索成本,避免網絡上參差不齊的代碼出現導致的bug。
包含組件一個Java基礎工具類,對文件、流、加密解密、轉碼、正則、線程、XML等JDK方法進行封裝,組成各種Util工具類,同時提供以下組件:
模塊介紹hutool-aopJDK動態代理封裝,提供非IOC下的切面支持hutool-bloomFilter布隆過濾,提供一些Hash算法的布隆過濾hutool-cache簡單緩存實現hutool-core核心,包括Bean操作、日期、各種Util等hutool-cron定時任務模塊,提供類Crontab表達式的定時任務hutool-crypto加密解密模塊,提供對稱、非對稱和摘要算法封裝 加密解密模塊,提供對稱、非對稱和摘要算法封裝hutool-dbJDBC封裝後的數據操作,基於ActiveRecord思想hutool-dfa基於DFA模型的多關鍵字查找hutool-extra擴展模塊,對第三方封裝(模板引擎、郵件、Servlet、二維碼、Emoji、FTP、分詞等)hutool-http基於HttpUrlConnection的Http客戶端封裝hutool-log自動識別日誌實現的日誌門面hutool-script腳本執行封裝,例如Javascripthutool-setting功能更強大的Setting配置文件和Properties封裝hutool-system系統參數調用封裝(JVM信息等)hutool-jsonJSON實現hutool-captcha圖片驗證碼實現hutool-poi針對POI中Excel和Word的封裝hutool-socket基於Java的NIO和AIO的Socket封裝hutool-jwtJSON Web Token (JWT)封裝實現可以根據需求對每個模塊單獨引入,也可以通過引入hutool-all方式引入所有模塊。
安裝這裡介紹四種安裝方式,分別是Maven安裝、Gradle安裝、下載jar包安裝和源碼編譯安裝
1)Maven安裝
在項目的pom.xml的dependencies中加入以下內容:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.17</version>
</dependency>2)Gradle安裝
implementation 'cn.hutool:hutool-all:5.7.17'3) 下載jar包安裝
將下面的連結拷貝到谷歌瀏覽器中,下載hutool-all-X.X.X.jar即可:
https://repo1.maven.org/maven2/cn/hutool/hutool-all/5.7.17/
然後將下載好的jar包導入到項目的依賴庫中即可
注意:注意 Hutool 5.x支持JDK8+,對Android平臺沒有測試,不能保證所有工具類或工具方法可用。如果你的項目使用JDK7,請使用Hutool 4.x版本(不再更新)
4)源碼編譯安裝
訪問Hutool的Gitee主頁:https://gitee.com/dromara/hutool 下載整個項目源碼(v5-master或v5-dev分支都可)然後進入Hutool項目目錄執行:
./hutool.sh install然後就可以使用Maven引入了。
添磚加瓦分支說明
Hutool的源碼分為兩個分支,功能如下:
分支作用v5-master主分支,release版本使用的分支,與中央庫提交的jar一致,不接收任何pr或修改v5-dev開發分支,默認為下個版本的SNAPSHOT版本,接受修改或pr提供bug反饋或建議
提交問題反饋請說明正在使用的JDK版本、Hutool版本和相關依賴庫版本。
Gitee issuehttps://gitee.com/dromara/hutool/issuesGithub issuehttps://github.com/dromara/hutool/issues貢獻代碼的步驟
1.在Gitee或者Github上fork項目到自己的repo
2.把fork過去的項目也就是你的項目clone到你的本地
3.修改代碼(記得一定要修改v5-dev分支)
4.commit後push到自己的庫(v5-dev分支)
5.登錄Gitee或Github在你首頁可以看到一個 pull request 按鈕,點擊它,填寫一些說明信息,然後提交即可。
6.等待維護者合併
PR遵照的原則
Hutool歡迎任何人為Hutool添磚加瓦,貢獻代碼,不過維護者是一個強迫症患者,為了照顧病人,需要提交的pr(pull request)符合一些規範,規範如下:
1.注釋完備,尤其每個新增的方法應按照Java文檔規範標明方法說明、參數說明、返回值說明等信息,必要時請添加單元測試,如果願意,也可以加上你的大名。
2.Hutool的縮進按照Eclipse(不要跟我說IDEA多好用,維護者非常懶,學不會,IDEA真香,改了Eclipse快捷鍵後舒服多了)默認(tab)縮進,所以請遵守(不要和我爭執空格與tab的問題,這是一個病人的習慣)。
3.新加的方法不要使用第三方庫的方法,Hutool遵循無依賴原則(除非在extra模塊中加方法工具)。
4.請pull request到v5-dev分支。Hutool在5.x版本後使用了新的分支:v5-master是主分支,表示已經發布中央庫的版本,這個分支不允許pr,也不允許修改。
5.我們如果關閉了你的issue或pr,請不要詫異,這是我們保持問題處理整潔的一種方式,你依舊可以繼續討論,當有討論結果時我們會重新打開。
寫在最後好了,有關hutool這個Java開發工具類庫就介紹到這裡了,想要詳細學習如何使用hutool API的同學可以前往可以前往下面的連結進行系統學習https://apidoc.gitee.com/dromara/hutool/
後面有時間筆者也會出幾篇在項目中如何使用hutool類庫中各個模塊中的工具類的示例,並附上測試類。
寫文不易,希望看到這裡的讀者朋友都能點亮下面的【在看】,也希望你能把這篇文章分享給更多身邊的程式設計師朋友。新來的朋友歡迎點擊文章頂部【程式設計師阿福】旁邊的藍色字體【阿福談Web編程】或者掃描下方二維碼加個關注,每周分享淺顯易懂且經過自身測試檢驗的實戰技術乾貨文章,助力讀者職場技術成長!
參考連結https://www.hutool.cn/docs/#/
往期原創推薦【1】解決一個粉絲反饋的spring-boot整合vue-element-admin項目出現的退出登錄無效的Bug
【2】SpringBoot項目擁抱Mybatis-Plus持久層框架實踐,全面提升資料庫層面開發效率!
【3】進甲方公司了!(附面試題整理)
【4】記一次使用Nacos 2.0.3版本搭建微服務註冊中心和客戶端的踩坑填坑詳細過程
【5】給2020-2021年寫下的技術文章做個目錄頁
---END---