- 軟件大?。?span>1000KB
- 軟件語(yǔ)言:中文
- 軟件類型:國(guó)產(chǎn)軟件
- 軟件類別:免費(fèi)軟件 / 編程輔助
- 更新時(shí)間:2019-05-23 10:19
- 運(yùn)行環(huán)境:WinAll
- 軟件等級(jí):
- 軟件廠商:
- 官方網(wǎng)站:https://www.hutool.cn
5.51M/中文/5.0
32.59M/英文/10.0
105.00M/中文/5.0
6.41M/中文/10.0
6.06M/中文/10.0
hutool是為了方便java工程師快速的管理自己的代碼,簡(jiǎn)化自己代碼方法而開(kāi)發(fā)的工具包,這個(gè)工具包雖然體積不是很大,但是擁有非常強(qiáng)大的功能,而且還能整合在自己的項(xiàng)目之中,形成自己獨(dú)特的工具庫(kù),感興趣的用戶快來(lái)綠色資源網(wǎng)下載吧!
Hutool是Hu + tool的自造詞,前者致敬我的“前任公司”,后者為工具之意,諧音“糊涂”,寓意追求“萬(wàn)事都作糊涂觀,無(wú)所謂失,無(wú)所謂得”的境界。Hutool是一個(gè)Java工具包,也只是一個(gè)工具包,它幫助我們簡(jiǎn)化每一行代碼,減少每一個(gè)方法,讓Java語(yǔ)言也可以“甜甜的”。Hutool最初是我項(xiàng)目中“util”包的一個(gè)整理,后來(lái)慢慢積累并加入更多非業(yè)務(wù)相關(guān)功能,并廣泛學(xué)習(xí)其它開(kāi)源項(xiàng)目精髓,經(jīng)過(guò)自己整理修改,最終形成豐富的開(kāi)源工具集。
hutool-aop jdk動(dòng)態(tài)代理封裝,提供非IOC下的切面支持
hutool-bloomFilter 布隆過(guò)濾,提供一些Hash算法的布隆過(guò)濾
hutool-cache 緩存
hutool-dfa 基于DFA模型的多關(guān)鍵字查找
hutool-extra 擴(kuò)展模塊,對(duì)第三方封裝(模板引擎、郵件等)
hutool-http 基于HttpUrlConnection的Http客戶端封裝
hutool-log 自動(dòng)識(shí)別日志實(shí)現(xiàn)的日志門(mén)面
hutool-script 腳本執(zhí)行封裝,例如javascript
hutool-setting 功能更強(qiáng)大的Setting配置文件和Properties封裝
hutool-system 系統(tǒng)參數(shù)調(diào)用封裝(JVM信息等)
hutool-json JSON實(shí)現(xiàn)
hutool-captcha 圖片驗(yàn)證碼實(shí)現(xiàn)
hutool-poi 針對(duì)POI中excel的封裝
hutool-core 核心,包括Bean操作、日期、各種Util等
hutool-cron 定時(shí)任務(wù)模塊,提供類Crontab表達(dá)式的定時(shí)任務(wù)
hutool-crypto 加密解密模塊
hutool-db JDBC封裝后的數(shù)據(jù)操作,基于ActiveRecord思想
1. 便捷性與靈活性并存
所謂便捷性,就是我們?cè)谡{(diào)用一個(gè)方法的時(shí)候參數(shù)要盡量少,只傳必要參數(shù)即可,非必要參數(shù)使用默認(rèn)值即可(想想一個(gè)方法一堆參數(shù)的時(shí)候,調(diào)用者暈頭轉(zhuǎn)向不知所云)。
所謂靈活性正好與便捷性相反,要讓一個(gè)方法的參數(shù)盡量多,為用戶靈活的操作方法提供最大可能性。
這兩個(gè)原則看似矛盾,其實(shí)只是針對(duì)不同場(chǎng)景設(shè)定的而已,缺一不可。便捷性強(qiáng)調(diào)拿來(lái)即用,為快速開(kāi)發(fā)提供可能;靈活性強(qiáng)調(diào)最大限度調(diào)優(yōu),為性能調(diào)優(yōu)和擴(kuò)展提供便利。
這一原則在針對(duì)編碼問(wèn)題上體現(xiàn)尤為突出,我們的大部分方法都是默認(rèn)“UTF-8”編碼的,這也是我們推薦的編碼方式,推薦大部分項(xiàng)目使用的編碼。但是一旦有遺留項(xiàng)目使用了類似“GBK”等編碼,沒(méi)關(guān)系,我們提供在相關(guān)方法中提供Charset對(duì)象參數(shù),可以自定義編碼。這樣使用這一原則就兼顧了各種項(xiàng)目的情況。
2. 適配與兼容
在Hutool中,適配器模式運(yùn)用特別廣泛,log模塊適配主流各大框架,db模塊適配主流各種連接池和關(guān)系數(shù)據(jù)庫(kù)。這種適配一是提高靈活性,二是可以很好的兼容各大框架,讓Hutool可以在各種復(fù)雜項(xiàng)目環(huán)境中生存的很好。
適配兼容產(chǎn)生的另一個(gè)原則是:你有我配,你無(wú)我有。說(shuō)白了就是:如果你項(xiàng)目中有這個(gè)框架,我可以完美適配,如果你沒(méi)有引入任何框架,Hutool自身實(shí)現(xiàn)了一些邏輯可以很好的工作。
3. 可選依賴原則
在Java項(xiàng)目中依賴常常是個(gè)頭疼的問(wèn)題,不同的框架強(qiáng)依賴另一些框架或包,雖然Maven可以很好的處理沖突問(wèn)題,但是項(xiàng)目底下滿滿的依賴jar包,是不是無(wú)形中拖慢了項(xiàng)目,也增加了復(fù)雜性和不確定性?而很多時(shí)候,我們是不是只是為了用一個(gè)小小的方法,就要引入一個(gè)第三方包,誰(shuí)喜歡這樣臃腫的項(xiàng)目?
Hutool中也會(huì)有一些依賴,但是全部都是optional的,在使用中不會(huì)關(guān)聯(lián)依賴,而這些依賴只有在使用者使用到時(shí)才會(huì)調(diào)用,這時(shí)可能會(huì)報(bào)ClassNotFoundException,不用擔(dān)心,我們自己引入即可。為什么要這樣做呢?以VelocityUtil這個(gè)工具類為例,使用Velocity的人占比極少,我們不能為了這些用戶而強(qiáng)引入Velocity包,而使用這個(gè)工具類的人應(yīng)該明白,我們應(yīng)該自己引入這個(gè)包。
而更多時(shí)候,我們需要用到某個(gè)方法時(shí),我的做法是將方法拷貝到項(xiàng)目中(Hutool中的方法正在不斷積累),類似于Apache Commons中的方法,Hutool中基本都有取代方法,完全不必要引入。
可選依賴原則讓我們的項(xiàng)目更加精簡(jiǎn),問(wèn)題也更容易排查。
4. 無(wú)侵入原則
Hutool始終是一個(gè)工具類而不是框架,這意味著它對(duì)項(xiàng)目的侵入幾乎為零,每個(gè)方法都是可被代替的,甚至整個(gè)Hutool也是可被替換的。這種無(wú)侵入性,讓使用者可以更加放心的在項(xiàng)目中引入,也保證了與其它框架完美的兼容。
5. 方法優(yōu)先于對(duì)象
在工具類中,往往以靜態(tài)方法為主。方法集中在一個(gè)類中,配合IDE查找使用起來(lái)是十分便利的。于是Hutool將JDK中許多的類總結(jié)抽象為一個(gè)方法,這一原則使用最多的就是流的相關(guān)方法,這些方法很好的隱藏了XXXInputStream、XXXReader等的復(fù)雜性。
6. 自動(dòng)識(shí)別優(yōu)于用戶定義
其實(shí)很多時(shí)候,有些參數(shù)、設(shè)置等是沒(méi)有必要我們自己傳入的,完全可以靠邏輯判斷自動(dòng)完成。一個(gè)方法很多時(shí)候明明只需要傳3個(gè)參數(shù),我們非要傳4個(gè),這多出的一個(gè)參數(shù)本身就是代碼的一種冗余。
這一原則在Hutool的各個(gè)角落都有所體現(xiàn),尤為明顯的比如log模塊。構(gòu)建日志對(duì)象的時(shí)候,很明顯類名可以動(dòng)態(tài)獲取,何必讓使用者再傳入呢?再比如在db模塊的數(shù)據(jù)庫(kù)配置中,數(shù)據(jù)庫(kù)驅(qū)動(dòng)命名完全可以根據(jù)連接字符串判斷出來(lái),何必要讓用戶傳入?這些問(wèn)題的在Hutool中都有非常好的封裝,而這一原則也漸漸變成Hutool哲學(xué)的一部分。
請(qǐng)描述您所遇到的錯(cuò)誤,我們將盡快予以修正,謝謝!
*必填項(xiàng),請(qǐng)輸入內(nèi)容