Introduktion till Apache Commons

Naturligtvis, låt oss börja med historien!

Det hela började 1999 med registreringen av "Apache Group" på uppdrag av Apache Software Foundation (ASF). Projektet som stöddes av stiftelsen var Apache HTTPD Web Server skapad mellan 1995 och 1999.

Detsamma var Jakarta-projektet (Jakarta-projektet), som dök upp som ett resultat av samarbetet mellan Sun Microsystems, IBM, Oracle och killarna från Apache. Och 2001, under arbetets gång, märkte utvecklingsteamet att de ofta skriver samma funktionalitet, ibland kopierar de det helt enkelt från varandra. Sådan kod kallas boilerplate. De lyckades samla in en stor mängd kod som hjälpte utvecklare, men det fanns inget bibliotek att lagra den.

Så här föddes Jakarta Commons-projektet, där Java-komponenter lades till (mest baserat på befintlig kod). Projektet döptes senare om till Apache Commons.

Mer allmänt är Apache Commons "en stor samling av små Java-verktyg". Det används i många open source-projekt.

Apache Commons-verktyg är kärnan i projekt som Apache Tomcat, Struts, Hibernate och andra.

Naturligtvis kan allt detta kopplas manuellt, utan ett byggsystem (Maven, Gradle), men vi kommer inte att göra detta och bara lägga till dem i vårt projekt.

För att arbeta med Maven, lägg först till lämpligt beroende:

<dependency>
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-lang3</artifactId>
   <version>${apache.common.version}</version>
</dependency>

Där ${apache.common.version} är versionen av detta bibliotek.

För Gradle (Groovy):

implementation 'org.apache.commons:commons-lang3:3.12.0'

Populära Apache Commons-bibliotek

Här är en lista över de mest använda klasserna och metoderna:

Apache Commons:Lang

Detta bibliotek innehåller följande paket:


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

Här kan du smidigt och snabbt arbeta med strängar, reflektion, serialisering, objekt och systemet. Låt oss notera de mest använda metoderna:

StringUtils

Ett stort antal metoder för att manipulera strängar.

  • is(Not)Blank/Empty(String) - det är dags att glömma den här typen av check: if (s!=null && s.trim().length()>0) , och det finns en bra ersättare här

StringEscapeUtils

  • (un)escapeSql(String) - Ersätt PreparedStatment
  • (un)escapeHtml(String) - för att bearbeta värden från HTML

ToStringBuilder

  • reflectionToString(Object) är en implementering av toString() baserad på reflektion. När du tar bort ett fält med reflektion kommer resultatet av metoden att ändras.

EqualsBuilder & HashCodeBuilder

  • reflectionEquals/HashCode(Object) är en bra ersättning för automatisk generering med sin egen fördel: dessa två metoder tar hänsyn till strukturella förändringar i objektet under drift, till exempel att lägga till fält

ExceptionUtils

  • getFullStackTrace(Throwable) - mata ut hela StackTrace som en sträng

Apache Commons: Samlingar

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

Ett bibliotek som perfekt kompletterar Java SE Collections Framework.

CollectionUtils är en klass för bekvämt arbete med samlingar:

    filter/find(Collection, Predicate) - filtrering och sökning efter predikat forAllDo(Collection, Closure) - utför stängning för varje element, men denna metod är utfasad , använd Iterator.forEach() is(Not)Empty(Collection) - låter dig att inte kontrollera till null innan du anropar isEqualCollection(Collection, Collection) - hjälper till att jämföra två samlingar

Det finns också många andra klasser med olika nivåer av nytta. Här och nedan listar jag de mest använda rent i mitt fall.

Apache Commons: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

Dessutom hjälper det att arbeta med filer i Java:

FileUtils

  • copyDirectory(File, File) - kopiera kataloger
  • copyFile(File, File) - kopiera filer
  • listFiles(File, String[], boolean) - lista filer efter förlängning och rekursivt
  • readFileToString(File, String)
  • writeStringToFile(File, String)

IOUtils

  • closeQuietly(Reader/Writer/InputStream/OutputStream) - stänger dataströmmen
  • copy(InputStream, OutputStream) - kopiera från en ström till en annan