java常見工具庫培訓

目前項目中常見的工具庫有apache commons,google guava,再算上spring的話,需要自己從頭開始寫工具類的情況大大減少。
爲了給廣大童鞋普及一下工具庫用法,減少無用功(還可能因爲實現的不好留後遺症的),這裏簡單的介紹一下相關工具類。google guava大家應該比較陌生,這裏先不介紹,:)

apache commons

官方地址: http://commons.apache.org/

apache commons歷史悠久,涉及範圍也是最廣的,在官網上分了數十個模塊,但有些模塊是新開發的,就不要貿然使用啦。

這裏只是介紹最最常用的commons庫,排名不分先後,如下:

commons-codec

包括常見的編碼、解碼算法,例如MD5,Base64,舉例如下:

  • Base64#encode 加密成base64串
  • Base64#decode 解密base64串
  • DigestUtils.md5Hex 進行MD5加密,注意得到的是小寫的MD5(MD5標準不區分大小寫),在比較的時候需要注意
  • DigestUtils.shaHex 進行SHA1加密 SHA256,512之類也是支持的,可以自行查閱

commons-collections

包括一堆增強的集合類(我瞭解不多,大家可以自行學習),各種和集合類相關的工具類,舉例如下:

  • CollectionUtils.isEmpty 是否null或空集合,這一類的方法很多,看看有個大概印象
  • MapUtils.isEmpty 是否null或空Map
  • ListUtils.removeAll 從某個列表中刪除存在於另外個列表的元素

同類型的還有SetUtils、IteratorUtils等,大體上是集合相關的操作,如過濾、是否相等、交集、差集、轉換(變同步、變不可變)等,其實這個用到的機會也不是很大。

commons-net

實現了一些常見的網絡協議,可能關係最大的要數ftp、smtp的實現了。而jdk帶的sun.net.ftp,這個儘量就少用拉。

這套api的實現用法得google一下了,看官方文檔的例子,
又或者別人的經驗代碼,例如這個http://my.oschina.net/hly3825/blog/33657

commons-httpclient

http客戶端實現,貌似已經從commons獨立出去了。3.x版本和4.x版本變化比較大,大家要使用的時候自行查閱資料。
儘量避免使用HttpURLConnection去直接搞。

commons-io

io方面的工具類,主要包括文件處理、流處理,常見的類有IOUtils、FileUtils、FilenameUtils。舉例如下:

  • IOUtils.closeQuietly 安靜關閉輸出輸出流,常用於finally關閉流的時候
  • IOUtils.copy 把某個輸入流拷貝到某個輸出流中去
  • IOUtils.toString 把某個輸入流、URI的內容轉換成字符串
  • IOUtils.readLines 按行讀取流
  • Charset.UTF_8 有一些常見的、系統都會支持的字符集,已經定義成常量
  • FileUtils.readLines 按行讀取文件
  • FileUtils.readFileToString 讀取文件保存在一個字符串中

IOUtils針對的是stream,FileUtils針對的是File對象,相應的有文件拷貝、刪除等操作。
注意的是,使用字符流格式的時候,務必指定編碼

commons-lang

這個是使用最多的庫了,有lang2.x和3.x版本,儘量使用3.x版本。

常見的有StringUtils、SystemUtils、RandomStringUtils、DateFormatUtils、DateUtils、各種Builder、Validate,舉例如下:

  • StringUitls.isEmpty 判空,和isBlank的區別在於它不進行trim
  • StringUtils.join 按分隔符合並,這個很常用
  • StringUtils.repeat 重複某個字符或字符串,有些需要格式化的是會用到
  • StringUtils.startsWith 和endsWith那樣,是增強版本,還有endsWithAny、endsWithIgnoreCase等
  • SystemUtils 主要是一些常見系統環境變量,如臨時目錄、用戶目錄、分隔符等
  • RandomStringUtils 用來生成各種隨即字符串,例如全字母、全數字或混合型的
  • DateFormatUtils、DateUtils 一個是字符串變日期,一個是日期相關的操作
  • 各種Builder 主要用實現常見的toString、compareTo、equals、hashcode等常見類,例如ReflectionToStringBuilder就很方便實現toString方法。同理,CompareToBuilder、EqualsBuilder、HashCodeBuilder都很好理解。
  • Validate 實現一些assert,例如Validate.notNull可以用來做前置校驗,和spring的Assert類是類似的。

其他commons庫

  • commons-fileupload 僅限於在文件上傳的類中使用,雖然它也有一些工具類,但是就不要在其他地方使用啦。
  • commons-dbcp 一個數據庫連接池,現在就比較少用了
  • commons-pool 一個java對象池實現,通常用來緩存一些耗時較大的對象,dbcp也是基於它的,一般也少直接用。
  • commons-logging 日誌包裝實現,在開源項目中使用廣泛,項目中一般直接用log4j等。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章