Apache Commons 簡介
當然,還是從歷史說起吧!
這一切始於 1999 年代表 Apache 軟件基金會 (ASF) 註冊的“Apache Group”。基金會支持的項目是 1995 年至 1999 年間創建的 Apache HTTPD Web Server。
同樣是 Jakarta Project(雅加達項目),它是 Sun Microsystems、IBM、Oracle 和來自 Apache 的傢伙合作的結果。而在 2001 年的工作中,開發團隊注意到他們經常編寫相同的功能,有時他們只是簡單地相互複製。這樣的代碼稱為樣板。他們設法收集了大量幫助開發人員的代碼,但沒有庫來存儲它們。
這就是 Jakarta Commons 項目的誕生方式,其中添加了 Java 組件(主要基於現有代碼)。該項目後來更名為 Apache Commons。
更廣泛地說,Apache Commons 是“小型 Java 實用程序的大集合”。它被用於許多開源項目。
Apache Commons 實用程序是 Apache Tomcat、Struts、Hibernate 等項目的核心。
當然,所有這些都可以手動連接,無需構建系統(Maven、Gradle),但我們不會這樣做,只是將它們添加到我們的項目中。
要使用 Maven,首先添加適當的依賴項:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${apache.common.version}</version>
</dependency>
其中${apache.common.version}是這個庫的版本。
對於搖籃(常規):
implementation 'org.apache.commons:commons-lang3:3.12.0'
流行的 Apache 公共庫
以下是最常用的類和方法的列表:
Apache Commons:Lang
該庫包含以下包:
Packages
org.apache.commons.lang
org.apache.commons.lang.builder
org.apache.commons.lang.enum
org.apache.commons.lang.enums
org.apache.commons.lang.exception
org.apache.commons.lang.math
org.apache.commons.lang.mutable
org.apache.commons.lang.reflect
org.apache.commons.lang.text
org.apache.commons.lang.time
在這裡你可以方便快捷地使用字符串、反射、序列化、對象和系統。讓我們記下最常用的方法:
字符串工具
大量用於操作字符串的方法。
- is(Not)Blank/Empty(String) - 是時候忘記這種類型的檢查了:if (s!=null && s.trim().length()>0),這裡有一個很好的替代品
StringEscapeUtils
- (un)escapeSql(String) - 替換PreparedStatment
- (un)escapeHtml(String) - 處理來自 HTML 的值
ToStringBuilder
- reflectionToString(Object)是基於反射的toString()實現。當您使用反射刪除字段時,該方法的結果將會改變。
EqualsBuilder & HashCodeBuilder
- reflectionEquals/HashCode(Object)是自動生成的一個很好的替代方法,它有自己的優勢:這兩個方法考慮了對像在運行過程中的結構變化,例如,添加字段
異常工具
- getFullStackTrace(Throwable) - 將整個 StackTrace 輸出為字符串
Apache Commons:集合
Packages
org.apache.commons.collections4
org.apache.commons.collections4.bag
org.apache.commons.collections4.bidimap
org.apache.commons.collections4.collection
org.apache.commons.collections4.comparators
org.apache.commons.collections4.functors
org.apache.commons.collections4.iterators
org.apache.commons.collections4.keyvalue
org.apache.commons.collections4.list
org.apache.commons.collections4.map
org.apache.commons.collections4.multimap
org.apache.commons.collections4.multiset
org.apache.commons.collections4.properties
org.apache.commons.collections4.queue
org.apache.commons.collections4.sequence
org.apache.commons.collections4.set
org.apache.commons.collections4.splitmap
org.apache.commons.collections4.trie
org.apache.commons.collections4.trie.analyzer
一個完美補充 Java SE 集合框架的庫。
CollectionUtils是一個方便使用集合的類:
-
filter/find(Collection, Predicate) - 按謂詞過濾和搜索 forAllDo(Collection, Closure) - 對每個元素執行閉包,但不推薦使用此方法,使用Iterator.forEach() is(Not)Empty(Collection) - 允許您在調用isEqualCollection(Collection, Collection)之前不要檢查是否為 null - 有助於比較兩個集合
還有許多其他類別的不同級別的實用程序。在這里和下面,我列出了我的案例中最常用的。
阿帕奇公地:IO
Packages
org.apache.commons.io
org.apache.commons.io.comparator
org.apache.commons.io.file
org.apache.commons.io.file.spi
org.apache.commons.io.filefilter
org.apache.commons.io.function
org.apache.commons.io.input
org.apache.commons.io.input.buffer
org.apache.commons.io.monitor
org.apache.commons.io.output
org.apache.commons.io.serialization
此外,它有助於在 Java 中處理文件:
文件工具
- copyDirectory(File, File) - 複製目錄
- copyFile(File, File) - 複製文件
- listFiles(File, String[], boolean) - 按擴展名遞歸列出文件
- readFileToString(文件,字符串)
- writeStringToFile(文件,字符串)
IOUtils
- closeQuietly(Reader/Writer/InputStream/OutputStream) - 關閉數據流
- copy(InputStream, OutputStream) - 從一個流複製到另一個
GO TO FULL VERSION