Inleiding tot Apache Commons
Laten we natuurlijk beginnen met de geschiedenis!
Het begon allemaal in 1999 met de registratie van de "Apache Group" namens de Apache Software Foundation (ASF). Het project dat door de stichting werd ondersteund, was de Apache HTTPD-webserver die tussen 1995 en 1999 werd gemaakt.
Hetzelfde was het Jakarta-project (Jakarta-project), dat verscheen als resultaat van de samenwerking van Sun Microsystems, IBM, Oracle en de jongens van Apache. En in 2001, tijdens het werk, merkte het ontwikkelingsteam dat ze vaak dezelfde functionaliteit schrijven, soms kopiëren ze het gewoon van elkaar. Dergelijke code wordt boilerplate genoemd. Ze slaagden erin een grote hoeveelheid code te verzamelen die ontwikkelaars hielp, maar er was geen bibliotheek om deze op te slaan.
Zo ontstond het Jakarta Commons-project, waarin Java-componenten werden toegevoegd (meestal op basis van bestaande code). Het project werd later omgedoopt tot Apache Commons.
Meer in het algemeen is Apache Commons "een grote verzameling kleine Java-hulpprogramma's". Het wordt gebruikt in veel open source-projecten.
Apache Commons-hulpprogramma's vormen de kern van projecten zoals Apache Tomcat, Struts, Hibernate en andere.
Dit alles kan natuurlijk handmatig worden aangesloten, zonder een bouwsysteem (Maven, Gradle), maar we zullen dit niet doen en ze gewoon toevoegen aan ons project.
Om met Maven te werken, voegt u eerst de juiste afhankelijkheid toe:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${apache.common.version}</version>
</dependency>
Waar ${apache.common.version} de versie van deze bibliotheek is.
Voor Gradle (Groovy):
implementation 'org.apache.commons:commons-lang3:3.12.0'
Populaire Apache Commons-bibliotheken
Hier is een lijst met de meest gebruikte klassen en methoden:
Apache Commons: Lang
Deze bibliotheek bevat de volgende pakketten:
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
Hier kunt u gemakkelijk en snel werken met strings, reflectie, serialisatie, objecten en het systeem. Laten we eens kijken naar de meest gebruikte methoden:
StringUtils
Een groot aantal methoden voor het manipuleren van strings.
- is(Not)Blank/Empty(String) - het is tijd om dit type controle te vergeten: if (s!=null && s.trim().length()>0) , en er is hier een goede vervanging
StringEscapeUtils
- (un)escapeSql(String) - Vervang PreparedStatment
- (un)escapeHtml(String) - om waarden uit HTML te verwerken
NaarStringBuilder
- reflectionToString(Object) is een implementatie van toString() gebaseerd op reflectie. Wanneer u een veld verwijdert met behulp van reflectie, verandert het resultaat van de methode.
Is gelijk aanBuilder & HashCodeBuilder
- reflectionEquals/HashCode(Object) is een goede vervanging voor automatisch genereren met zijn eigen voordeel: deze twee methoden houden rekening met structurele veranderingen in het object tijdens de werking, bijvoorbeeld door velden toe te voegen
UitzonderingUtils
- getFullStackTrace(Throwable) - voer de volledige StackTrace uit als een string
Apache Commons: Collecties
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
Een bibliotheek die perfect aansluit bij het Java SE Collections Framework.
CollectionUtils is een klasse voor gemakkelijk werken met collecties:
-
filter/find(Collection, Predicate) - filteren en zoeken op predikaat forAllDo(Collection, Closure) - voert Closure uit voor elk element, maar deze methode is verouderd , gebruik Iterator.forEach() is(Not)Empty(Collection) - hiermee kunt u niet controleren op null voordat isEqualCollection(Collection, Collection) wordt aangeroepen - helpt bij het vergelijken van twee collecties
Er zijn ook veel andere klassen met verschillende niveaus van bruikbaarheid. Hier en hieronder som ik de meest gebruikte puur in mijn geval op.
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
Bovendien helpt het om met bestanden in Java te werken:
FileUtils
- copyDirectory(File, File) - kopieer mappen
- copyFile(File, File) - kopieer bestanden
- listFiles(File, String[], boolean) - lijst bestanden op extensie en recursief
- readFileToString(Bestand, String)
- writeStringToFile(Bestand, String)
IOUtils
- closeQuietly(Reader/Writer/InputStream/OutputStream) - sluit de gegevensstroom
- copy(InputStream, OutputStream) - kopiëren van de ene stream naar de andere
GO TO FULL VERSION