Introduktion til Apache Commons

Selvfølgelig, lad os starte med historien!

Det hele startede i 1999 med registreringen af ​​"Apache Group" på vegne af Apache Software Foundation (ASF). Projektet støttet af fonden var Apache HTTPD-webserveren oprettet mellem 1995 og 1999.

Det samme var Jakarta-projektet (Jakarta-projektet), som dukkede op som et resultat af samarbejdet mellem Sun Microsystems, IBM, Oracle og gutterne fra Apache. Og i 2001, under arbejdet, bemærkede udviklingsteamet, at de ofte skriver den samme funktionalitet, nogle gange kopierer de det blot fra hinanden. En sådan kode kaldes boilerplate. Det lykkedes dem at indsamle en stor mængde kode, der hjalp udviklere, men der var ikke noget bibliotek til at gemme det.

Sådan blev Jakarta Commons-projektet født, hvor Java-komponenter blev tilføjet (for det meste baseret på eksisterende kode). Projektet blev senere omdøbt til Apache Commons.

Mere generelt er Apache Commons "en stor samling af små Java-værktøjer". Det bruges i mange open source-projekter.

Apache Commons-værktøjer er kernen i projekter som Apache Tomcat, Struts, Hibernate og andre.

Selvfølgelig kan alt dette forbindes manuelt uden et byggesystem (Maven, Gradle), men vi vil ikke gøre dette og bare tilføje dem til vores projekt.

For at arbejde med Maven skal du først tilføje den relevante afhængighed:

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

Hvor ${apache.common.version} er versionen af ​​dette bibliotek.

For Gradle (Groovy):

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

Populære Apache Commons-biblioteker

Her er en liste over de mest brugte klasser og metoder:

Apache Commons: Lang

Dette bibliotek indeholder følgende pakker:


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

Her kan du nemt og hurtigt arbejde med strenge, refleksion, serialisering, objekter og systemet. Lad os bemærke de mest brugte metoder:

StringUtils

Et stort antal metoder til at manipulere strenge.

  • is(Not)Blank/Empty(String) - det er tid til at glemme denne type check: if (s!=null && s.trim().length()>0) , og der er en god erstatning her

StringEscapeUtils

  • (un)escapeSql(String) - Erstat PreparedStatment
  • (un)escapeHtml(String) - til at behandle værdier fra HTML

ToStringBuilder

  • reflectionToString(Object) er en implementering af toString() baseret på refleksion. Når du fjerner et felt ved hjælp af refleksion, ændres resultatet af metoden.

EqualsBuilder & HashCodeBuilder

  • reflectionEquals/HashCode(Object) er en god erstatning for automatisk generering med sin egen fordel: disse to metoder tager højde for strukturelle ændringer i objektet under drift, f.eks. tilføjelse af felter

UndtagelseUtils

  • getFullStackTrace(Throwable) - output hele StackTrace som en streng

Apache Commons: Samlinger

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

Et bibliotek, der perfekt komplementerer Java SE Collections Framework.

CollectionUtils er en klasse til praktisk arbejde med samlinger:

    filter/find(Collection, Predicate) - filtrering og søgning efter prædikat forAllDo(Collection, Closure) - udfører lukning for hvert element, men denne metode er forældet , brug Iterator.forEach() is(Not)Empty(Collection) - giver dig mulighed for ikke at tjekke til null før du kalder isEqualCollection(Collection, Collection) - hjælper med at sammenligne to samlinger

Der er også mange andre klasser med varierende niveauer af nytte. Her og nedenfor lister jeg de mest brugte rent i mit tilfælde.

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

Derudover hjælper det at arbejde med filer i Java:

FileUtils

  • copyDirectory(File, File) - kopier mapper
  • copyFile(File, File) - kopier filer
  • listFiles(File, String[], boolean) - lister filer efter udvidelse og rekursivt
  • readFileToString(File, String)
  • writeStringToFile(File, String)

IOUtils

  • closeQuietly(Reader/Writer/InputStream/OutputStream) - lukker datastrømmen
  • copy(InputStream, OutputStream) - kopier fra en stream til en anden