用了這個 Java 小工具,我廢了
時間:2021-12-07 11:01:47
手機(jī)看文章
掃描二維碼
隨時隨地手機(jī)看文章
[導(dǎo)讀]我們在開發(fā)時,經(jīng)常需要重復(fù)編寫很多和業(yè)務(wù)無關(guān)的代碼,比如獲取指定日期對象、獲取本機(jī)IP地址、校驗身份證號、數(shù)據(jù)加密等。通常我們會把這些代碼獨立出來,放到util包下,作為工具類供其他代碼調(diào)用。相信每位Java開發(fā)者都自己寫(粘貼)過工具類,寫的項目多了,日積月累,可能有的同學(xué)已經(jīng)...
我們在開發(fā)時,經(jīng)常需要重復(fù)編寫很多和業(yè)務(wù)無關(guān)的代碼,比如獲取指定日期對象、獲取本機(jī) IP 地址、校驗身份證號、數(shù)據(jù)加密等。
通常我們會把這些代碼獨立出來,放到 util 包下,作為 工具類 供其他代碼調(diào)用。相信每位 Java 開發(fā)者都自己寫(粘貼)過工具類,寫的項目多了,日積月累,可能有的同學(xué)已經(jīng)有了自己的工具類庫。但是,當(dāng)需要用到新的工具類時,你會怎么做呢?比如老板讓我做一個 MD5 加密的工具,可是我根本沒有學(xué)過加密算法!于是我打開某度搜索引擎,搜索 “Java MD5加密算法實現(xiàn)”,打開了某篇博客(可能還要登錄),再復(fù)制粘貼,再去掉一些無用的注釋,再略加修改,得到工具類,放到自己的 util 目錄下。這一套操作下來,十幾分鐘可能就過去了。而這個代碼和我們的業(yè)務(wù)是完全無關(guān)的,就可能會耽誤一些項目的開發(fā)時間!我們都喜歡白 piao,那么有沒有現(xiàn)成的 util 工具包給我們用呢?來了來了,Hutool 工具庫!
??<groupId>cn.hutoolgroupId>
??<artifactId>hutool-allartifactId>
??<version>5.4.4version>
dependency>
然后就可以參照文檔去使用啦,文檔地址:https://hutool.cn/docs/
可以根據(jù)需求對每個模塊單獨引入,也可以通過引入 hutool-all 方式引入所有模塊。
有時間的話,應(yīng)該閱讀 Hutool 的源碼,學(xué)習(xí)其各種工具類的優(yōu)秀實現(xiàn),培養(yǎng)自己的代碼能力。Hutool 的源碼其實并不難,就是通過大量的靜態(tài)方法來方便調(diào)用,比如下面的手機(jī)號工具類:?/**
??*?手機(jī)號工具類
??*/
?public?class?PhoneUtil?{
???/**
????*?座機(jī)號碼
????*/
???private?static?final?Pattern?TEL?=
?????Pattern.compile("0\\d{2,3}-[1-9]\\d{6,7}");
???/**
????*?驗證是否為手機(jī)號碼(中國)
????*
????*?@param?value?值
????*?@return?是否為手機(jī)號碼(中國)
????*/
???public?static?boolean?isMobile(CharSequence?value)?{
?????return?Validator.isMatchRegex(PatternPool.MOBILE,?value);
???}
???...
?}大家可以自行閱讀感興趣的功能的源碼,有朝一日自己也能成為開源大佬!
以上就是本期分享,求個 點贊 在看 ,這將是我持續(xù)創(chuàng)作的最大動力,謝謝
通常我們會把這些代碼獨立出來,放到 util 包下,作為 工具類 供其他代碼調(diào)用。相信每位 Java 開發(fā)者都自己寫(粘貼)過工具類,寫的項目多了,日積月累,可能有的同學(xué)已經(jīng)有了自己的工具類庫。但是,當(dāng)需要用到新的工具類時,你會怎么做呢?比如老板讓我做一個 MD5 加密的工具,可是我根本沒有學(xué)過加密算法!于是我打開某度搜索引擎,搜索 “Java MD5加密算法實現(xiàn)”,打開了某篇博客(可能還要登錄),再復(fù)制粘貼,再去掉一些無用的注釋,再略加修改,得到工具類,放到自己的 util 目錄下。這一套操作下來,十幾分鐘可能就過去了。而這個代碼和我們的業(yè)務(wù)是完全無關(guān)的,就可能會耽誤一些項目的開發(fā)時間!我們都喜歡白 piao,那么有沒有現(xiàn)成的 util 工具包給我們用呢?來了來了,Hutool 工具庫!
Hutool 是什么?
Hutool 是一個開源的 Java 工具包類庫,對文件、流、加密解密、轉(zhuǎn)碼、正則、線程、XML 等 JDK 方法進(jìn)行封裝,組成各種 Util 工具類。Hutool 官網(wǎng):https://hutool.cn/GitHub 地址:https://github.com/looly/hutool
為什么用 Hutool?
Java 語言雖然自帶了很多的工具類,但是相對于 Scala 等高級語言來說,封裝的工具還不夠豐富和完善,遠(yuǎn)遠(yuǎn)不能滿足我們的需求。因此,出現(xiàn)了各種各樣的第三方類庫,比如知名的 guava、apache-common-utils,雖然這些類庫的實現(xiàn)很優(yōu)秀,但作為工具類庫來說,工具的種類還不夠多,通常我們還要搭配其他第三方類庫使用(比如操作 Excel 的庫 POI)。而 Hutool 是一個小而全的 Java 工具類庫,有各種各樣的工具,基本可以滿足我們所有的業(yè)務(wù)訴求。這也是為啥類庫取名 Hutool,Hutool 諧音“糊涂”,寓意追求 “萬事都作糊涂觀,無所謂失,無所謂得” 的境界。Hutool 通過靜態(tài)方法封裝,能夠降低相關(guān) API 的學(xué)習(xí)成本,提高工作效率,使 Java 擁有函數(shù)式語言般的優(yōu)雅,讓 Java 語言也可以“甜甜的”。有的同學(xué)可能會認(rèn)為工具類自己實現(xiàn)就好了,干嘛非要引入一個三方類庫呢?確實,如果你有能力,可以實現(xiàn)和建設(shè)自己的工具庫,但是自己實現(xiàn)難免會花很多的時間,或者實現(xiàn)的性能不夠高,甚至可能出現(xiàn)一些問題(比如資源忘記 close 導(dǎo)致泄露,我就干過)。而 Hutool 中的工具方法來自于每個用戶的精雕細(xì)琢,作為一個開源項目,由很多大佬共同開發(fā)和完善,并經(jīng)歷了上百個企業(yè)的真實檢驗。使得它涵蓋了Java 開發(fā)底層代碼中的方方面面,既是大型項目開發(fā)中解決小問題的利器,也是小型項目中的效率擔(dān)當(dāng)。Hutool 是項目中 “util” 包友好的替代,它節(jié)省了開發(fā)人員對項目中公用類和公用工具方法的封裝時間,使開發(fā)專注于業(yè)務(wù),同時可以最大限度的避免封裝不完善帶來的 bug。下面通過一個演示,來看下 Hutool 如何提高我們的開發(fā)效率。它如何提升我們的開發(fā)效率?
Hutool 的目標(biāo)是使用一個工具方法代替一段復(fù)雜代碼,從而最大限度的避免“復(fù)制粘貼”代碼的問題,徹底改變我們寫代碼的方式。以發(fā)送郵件為例:- 以前:打開搜索引擎 => 搜 “Java 如何發(fā)送郵件” => 打開幾篇博客 => 選擇一個看似優(yōu)秀的實現(xiàn) => 復(fù)制粘貼 => 改改就用
- 現(xiàn)在:引入 Hutool => 調(diào)用 MailUtil.sendText 方法 演示使用:
如何使用 Hutool?
Hutool的用法非常簡單,而且對業(yè)務(wù)無任何侵入,可以直接通過 Maven 或者 Gradle 等包管理工具引入,也可以直接把 Hutool 的代碼復(fù)制粘貼到自己的項目中。- Maven 方式,在項目的 pom.xml 的 dependencies 中加入下列代碼:
??<groupId>cn.hutoolgroupId>
??<artifactId>hutool-allartifactId>
??<version>5.4.4version>
dependency>
- Gradle方式,在build.gradle中加入下列代碼:
然后就可以參照文檔去使用啦,文檔地址:https://hutool.cn/docs/
Hutool 的功能
Hutool 的功能非常大而全,常用的工具有:1.日期工具通過 DateUtil 類,提供高度便捷的日期訪問、處理和轉(zhuǎn)換方式。2.HTTP 客戶端通過 HttpUtil 對 HTTP 客戶端的封裝,實現(xiàn)便捷的 HTTP 請求,并簡化文件上傳操作。3.轉(zhuǎn)換工具通過 Convert 類中的相應(yīng)靜態(tài)方法,提供一整套的類型轉(zhuǎn)換解決方案,并通過 ConverterRegistry 工廠類自定義轉(zhuǎn)換。4.配置文件工具(Setting)通過 Setting 對象,提供兼容 Properties 文件的更加強(qiáng)大的配置文件工具,用于解決中文、分組等 JDK 配置文件存在的諸多問題。當(dāng)然還有更多組件,如下:模塊 | 介紹 |
hutool-aop | JDK動態(tài)代理封裝,提供非IOC下的切面支持 |
hutool-bloomFilter | 布隆過濾,提供一些Hash算法的布隆過濾 |
hutool-cache | 簡單緩存實現(xiàn) |
hutool-core | 核心,包括Bean操作、日期、各種Util等 |
hutool-cron | 定時任務(wù)模塊,提供類Crontab表達(dá)式的定時任務(wù) |
hutool-crypto | 加密解密模塊,提供對稱、非對稱和摘要算法封裝 |
hutool-db | JDBC封裝后的數(shù)據(jù)操作,基于ActiveRecord思想 |
hutool-dfa | 基于DFA模型的多關(guān)鍵字查找 |
hutool-extra | 擴(kuò)展模塊,對第三方封裝(模板引擎、郵件、Servlet、二維碼、Emoji、FTP、分詞等) |
hutool-http | 基于HttpUrlConnection的Http客戶端封裝 |
hutool-log | 自動識別日志實現(xiàn)的日志門面 |
hutool-script | 腳本執(zhí)行封裝,例如Javascript |
hutool-setting | 功能更強(qiáng)大的Setting配置文件和Properties封裝 |
hutool-system | 系統(tǒng)參數(shù)調(diào)用封裝(JVM信息等) |
hutool-json | JSON實現(xiàn) |
hutool-captcha | 圖片驗證碼實現(xiàn) |
hutool-poi | 針對POI中Excel和Word的封裝 |
hutool-socket | 基于Java的NIO和AIO的Socket封裝 |
寫在最后
最后,給大家一點建議。不要僅僅把 Hutool 當(dāng)做一個工具去使用,用久了會把人用傻的?!有時間的話,應(yīng)該閱讀 Hutool 的源碼,學(xué)習(xí)其各種工具類的優(yōu)秀實現(xiàn),培養(yǎng)自己的代碼能力。Hutool 的源碼其實并不難,就是通過大量的靜態(tài)方法來方便調(diào)用,比如下面的手機(jī)號工具類:?/**
??*?手機(jī)號工具類
??*/
?public?class?PhoneUtil?{
???/**
????*?座機(jī)號碼
????*/
???private?static?final?Pattern?TEL?=
?????Pattern.compile("0\\d{2,3}-[1-9]\\d{6,7}");
???/**
????*?驗證是否為手機(jī)號碼(中國)
????*
????*?@param?value?值
????*?@return?是否為手機(jī)號碼(中國)
????*/
???public?static?boolean?isMobile(CharSequence?value)?{
?????return?Validator.isMatchRegex(PatternPool.MOBILE,?value);
???}
???...
?}大家可以自行閱讀感興趣的功能的源碼,有朝一日自己也能成為開源大佬!
以上就是本期分享,求個 點贊 在看 ,這將是我持續(xù)創(chuàng)作的最大動力,謝謝