Hutool 3.1.2免費版是一款非常強大的java工具庫,擁有非常實用的工具操作類,覆蓋大部分應用場景,需要的用戶趕快來下載吧。
Hutool是一個Java工具集,針對我們項目中util包進行開刀,抽象大量的工具方法,旨在減少項目中工具類的數量,將我們的編碼工作專注在業務上。Hutool 對文件、流、加密解密、轉碼、正則、線程、XML、日期、Http客戶端 等 JDK 方法進行封裝,組成各種 Util 工具類。
Hutool並非框架,而是一個工具類方法集合,隨用隨取,且隨時可被替換,與任何框架不衝突。
Hutool的大部分工具方法並不依賴第三方包(extra模塊對第三方框架封裝工具類除外),輕量簡潔。
1. 方法優先於對象
在工具類中,往往以靜態方法為主。方法集中在一個類中,配合IDE查找使用起來是十分便利的。於是Hutool將JDK中許多的類總結抽象為一個方法,這一原則使用最多的就是流的相關方法,這些方法很好的隱藏了XXXInputStream、XXXReader等的複雜性。
2. 自動識別優於用戶定義
其實很多時候,有些參數、設置等是沒有必要我們自己傳入的,完全可以靠邏輯判斷自動完成。一個方法很多時候明明隻需要傳3個參數,我們非要傳4個,這多出的一個參數本身就是代碼的一種冗餘。
這一原則在Hutool的各個角落都有所體現,尤為明顯的比如log模塊。構建日誌對象的時候,很明顯類名可以動態獲取,何必讓使用者再傳入呢?再比如在db模塊的數據庫配置中,數據庫驅動命名完全可以根據連接字符串判斷出來,何必要讓用戶傳入?這些問題的在Hutool中都有非常好的封裝,而這一原則也漸漸變成Hutool哲學的一部分。
3. 便捷性與靈活性並存
所謂便捷性,就是我們在調用一個方法的時候參數要盡量少,隻傳必要參數即可,非必要參數使用默認值即可(想想一個方法一堆參數的時候,調用者暈頭轉向不知所雲)。
所謂靈活性正好與便捷性相反,要讓一個方法的參數盡量多,為用戶靈活的操作方法提供最大可能性。
這兩個原則看似矛盾,其實隻是針對不同場景設定的而已,缺一不可。便捷性強調拿來即用,為快速開發提供可能;靈活性強調最大限度調優,為性能調優和擴展提供便利。
這一原則在針對編碼問題上體現尤為突出,我們的大部分方法都是默認“UTF-8”編碼的,這也是我們推薦的編碼方式,推薦大部分項目使用的編碼。但是一旦有遺留項目使用了類似“GBK”等編碼,沒關係,我們提供在相關方法中提供Charset對象參數,可以自定義編碼。這樣使用這一原則就兼顧了各種項目的情況。
4. 適配與兼容
在Hutool中,適配器模式運用特別廣泛,log模塊適配主流各大框架,db模塊適配主流各種連接池和關係數據庫。這種適配一是提高靈活性,二是可以很好的兼容各大框架,讓Hutool可以在各種複雜項目環境中生存的很好。
適配兼容產生的另一個原則是:你有我配,你無我有。說白了就是:如果你項目中有這個框架,我可以完美適配,如果你沒有引入任何框架,Hutool自身實現了一些邏輯可以很好的工作。
5. 可選依賴原則
在Java項目中依賴常常是個頭疼的問題,不同的框架強依賴另一些框架或包,雖然Maven可以很好的處理衝突問題,但是項目底下滿滿的依賴jar包,是不是無形中拖慢了項目,也增加了複雜性和不確定性?而很多時候,我們是不是隻是為了用一個小小的方法,就要引入一個第三方包,誰喜歡這樣臃腫的項目?
Hutool中也會有一些依賴,但是全部都是optional的,在使用中不會關聯依賴,而這些依賴隻有在使用者使用到時才會調用,這時可能會報ClassNotFoundException,不用擔心,我們自己引入即可。為什麼要這樣做呢?以VelocityUtil這個工具類為例,使用Velocity的人占比極少,我們不能為了這些用戶而強引入Velocity包,而使用這個工具類的人應該明白,我們應該自己引入這個包。
而更多時候,我們需要用到某個方法時,我的做法是將方法拷貝到項目中(Hutool中的方法正在不斷積累),類似於Apache Commons中的方法,Hutool中基本都有取代方法,完全不必要引入。
可選依賴原則讓我們的項目更加精簡,問題也更容易排查。
6. 無侵入原則
Hutool始終是一個工具類而不是框架,這意味著它對項目的侵入幾乎為零,每個方法都是可被代替的,甚至整個Hutool也是可被替換的。這種無侵入性,讓使用者可以更加放心的在項目中引入,也保證了與其它框架完美的兼容。
新特性
ArrayUtil增加containsIgnoreCase和indexOfIgnoreCase方法
DbUtil增加toSqlDate和toSqlTimestamp和setShowSqlGlobal方法
RuntimeUtil增加可選編碼的方法
CharsetUtil.systemCharset修改邏輯,Windows使用GBK編碼
db模塊加強異常提示信息
升級可選依賴版本
Setting增加getandRemove和getAndRemoveStr方法,並去除db模塊中配置鍵別名獲取相關冗餘方法
FileUtil增加subPath、getPathEle方法(針對JDK7的Path對象封裝)
改進WatchMonitor,文件不存在時根據path判斷是文件還是目錄
參閱iceroot庫,增加DateUtil增加timeToSecond和secondToTime方法(感謝@【北京】寧靜)
DateUtil.beginOfWeek加入方法可選一周的第一天,且默認周一為第一天(感謝@【北京】flyinke)
Hutool-db支持value為"= null"轉換為"is null"
工具類繼承支持(去除private構造)
增加getGroup和findAllGroup兩類方法
UrlUtil增加utf-8重載(感謝@【北京】寧靜)
按照Ali規範整理代碼。Cache模塊中定時清理改為定時任務池方式
Http模塊全局Header支持
JSON模塊增加JSONStrFromater,用於格式化非標準的JSON字符串
增加BeanDesc代替JDK的BeanInfo,提供更靈活的Getter和Setter
BeanUtil.fillBean方法使用BeanDesc替換
增加FileAppender類用於積累追加文件內容
增加ReferenceUtil用於工具化創建軟引用和弱引用
ReflectUtil中將異常包裝為UtilExcception,並增加invoke重載支持字符串
ClassUtil中部分方法被標記過時,大部分與ReflectUtil中方法重疊,通過注釋指引到ReflectUtil
core包中加入驗證碼生成
棄用Random類,改為ThreadLocalRandom
extra模塊中增加MailUtil發送郵件工具(依賴javax.mail)
StrUtil增加strip和stripIgnoreCase方法
poi模塊新增ExcelSaxReader,對大數據量的Excel讀取增加支持
Bug修複
db模塊修複Oracle中傳入java.util.Date對象無法識別類型問題(默認按照Timestamp處理)(感謝@【杭州】wiley)
修複RuntimeUtil中亂碼和單條帶參數命令執行失敗問題(@【北京】寧靜)
修複ThreadUtil newExecutorByBlockingCoefficient中不能傳入0的bug(issue#IF7UN@Gitee)
修複CollUtil.split的bug(issue#IF7UT@Gitee)
修複Page.getEndPosition()錯誤(感謝@【深圳】塵風了了)
修複Http中head方法讀取body失敗問題,略過讀取body(issue#IFA3C@Gitee)
修複從正文中獲取編碼類型的錯誤(issue#IFBYO@Gitee)
修複IOUtil.readBytes中讀取為0導致的越界問題(issue#46@Github)
修複Crypto模塊中DESede算法密鑰生成bug
修複JSON轉Bean時在ignoreError模式下類型不匹配時無法忽略問題
修複RSA分組加密中中文導致的問題(pr#47@Github)
修複NumberUtil.equals方法的一個坑(精度不同導致不同)(感謝@【北京】Dull)
修複StrUtil中部分方法判空後返回原值導致的空指針問題
76.4M / 03-25
立即下載55M / 06-05
立即下載237.9M / 04-13
立即下載140.5M / 03-06
立即下載900.9M / 03-02
立即下載96.2M / 07-06
立即下載311.2M / 07-06
立即下載335M / 07-06
立即下載200M / 07-06
立即下載413.8M / 07-06
立即下載353.9M / 06-05
立即下載131.8M / 04-13
立即下載230.8M / 03-03
立即下載195.6M / 03-03
立即下載165.4M / 03-03
立即下載45.6M / 09-08
立即下載665.2M / 07-06
立即下載2.84G / 07-06
立即下載93M / 07-06
立即下載338.3M / 07-06
立即下載1.38G / 07-26
立即下載488.3M / 07-16
立即下載109.8M / 06-03
立即下載142M / 01-08
立即下載1.2M / 11-23
立即下載548.8M / 04-13
立即下載1.6M / 04-13
立即下載1.48G / 03-18
立即下載646.6M / 03-03
立即下載133.7M / 03-03
立即下載325.8M / 06-07
立即下載60M / 04-29
立即下載254M / 04-25
立即下載659M / 04-23
立即下載1M / 12-26
立即下載253.4M / 12-08
立即下載253M / 12-08
立即下載1.19G / 11-16
立即下載110.5M / 04-23
立即下載26.7M / 03-16
立即下載488.3M / 07-16
立即下載248.9M / 12-08
立即下載248.9M / 12-08
立即下載201.2M / 04-13
立即下載100.6M / 03-06
立即下載148.9M / 03-06
立即下載1.12G / 07-06
立即下載1.25G / 07-06
立即下載9.48G / 07-06
立即下載50KB / 07-06
立即下載116.2M / 04-10
立即下載1.92G / 04-17
立即下載201.5M / 04-13
立即下載7.31G / 07-01
立即下載94.3M / 07-06
立即下載2.48G / 07-06
立即下載7.63G / 07-06
立即下載1M / 07-06
立即下載778.1M / 07-06
立即下載509.7M / 07-06
立即下載561.8M / 07-11
立即下載1.32G / 01-19
立即下載72M / 07-06
立即下載548.7M / 07-06
立即下載1.00G / 07-06
立即下載9.13G / 07-06
立即下載126.2M / 07-06
立即下載72M / 07-06
立即下載105.1M / 07-06
立即下載132M / 07-06
立即下載