Pengenalan kepada Apache Commons

Sudah tentu, mari kita mulakan dengan sejarah!

Semuanya bermula pada tahun 1999 dengan pendaftaran "Kumpulan Apache" bagi pihak Yayasan Perisian Apache (ASF). Projek yang disokong oleh yayasan itu ialah Pelayan Web HTTPD Apache yang dicipta antara 1995 dan 1999.

Perkara yang sama ialah Projek Jakarta (projek Jakarta), yang muncul sebagai hasil kerjasama Sun Microsystems, IBM, Oracle dan orang-orang dari Apache. Dan pada tahun 2001, semasa kerja, pasukan pembangunan menyedari bahawa mereka sering menulis fungsi yang sama, kadang-kadang mereka hanya menyalinnya dari satu sama lain. Kod sedemikian dipanggil boilerplate. Mereka berjaya mengumpul sejumlah besar kod yang membantu pembangun, tetapi tiada perpustakaan untuk menyimpannya.

Ini adalah bagaimana projek Jakarta Commons dilahirkan, di mana komponen Java telah ditambahkan (kebanyakannya berdasarkan kod sedia ada). Projek itu kemudiannya dinamakan semula kepada Apache Commons.

Secara lebih luas, Apache Commons ialah "koleksi besar utiliti Java kecil". Ia digunakan dalam banyak projek sumber terbuka.

Utiliti Apache Commons berada di tengah-tengah projek seperti Apache Tomcat, Struts, Hibernate, dan lain-lain.

Sudah tentu, semua ini boleh disambungkan secara manual, tanpa sistem binaan (Maven, Gradle), tetapi kami tidak akan melakukan ini dan hanya menambahnya pada projek kami.

Untuk bekerja dengan Maven, tambahkan pergantungan yang sesuai dahulu:

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

Di mana ${apache.common.version} ialah versi pustaka ini.

Untuk Gradle (Groovy):

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

Perpustakaan Apache Commons yang Popular

Berikut ialah senarai kelas dan kaedah yang paling banyak digunakan:

Apache Commons:Lang

Perpustakaan ini mengandungi pakej berikut:


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

Di sini anda boleh bekerja dengan mudah dan cepat dengan rentetan, pantulan, siri, objek dan sistem. Mari kita perhatikan kaedah yang paling banyak digunakan:

StringUtils

Sebilangan besar kaedah untuk memanipulasi rentetan.

  • is(Not)Blank/Empty(String) - sudah tiba masanya untuk melupakan jenis semakan ini: if (s!=null && s.trim().length()>0) , dan terdapat penggantian yang baik di sini

StringEscapeUtils

  • (un)escapeSql(String) - Gantikan PreparedStatment
  • (un)escapeHtml(String) - untuk memproses nilai daripada HTML

ToStringBuilder

  • reflectionToString(Object) ialah pelaksanaan toString() berdasarkan refleksi. Apabila anda mengalih keluar medan menggunakan refleksi, hasil kaedah akan berubah.

EqualsBuilder & HashCodeBuilder

  • reflectionEquals/HashCode(Object) ialah pengganti yang baik untuk penjanaan automatik dengan kelebihan tersendiri: kedua-dua kaedah ini mengambil kira perubahan struktur dalam objek semasa operasi, contohnya, menambah medan

ExceptionUtils

  • getFullStackTrace(Throwable) - keluarkan keseluruhan StackTrace sebagai rentetan

Apache Commons: Koleksi

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

Pustaka yang melengkapkan dengan sempurna Rangka Kerja Koleksi Java SE.

CollectionUtils ialah kelas untuk kerja mudah dengan koleksi:

    penapis/cari(Koleksi, Predikat) - menapis dan mencari mengikut predikat untukAllDo(Koleksi, Penutupan) - melaksanakan Penutupan untuk setiap elemen, tetapi kaedah ini ditamatkan , gunakan Iterator.forEach() is(Not)Empty(Collection) - membolehkan anda untuk tidak menyemak ke null sebelum memanggil isEqualCollection(Collection, Collection) - membantu membandingkan dua koleksi

Terdapat juga banyak kelas lain dengan pelbagai tahap utiliti. Di sini dan di bawah saya menyenaraikan yang paling biasa digunakan semata-mata dalam kes saya.

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

Selain itu, ia membantu untuk bekerja dengan fail dalam Java:

FileUtils

  • copyDirectory(Fail, Fail) - salin direktori
  • copyFile(Fail, Fail) - salin fail
  • listFiles(Fail, String[], boolean) - senaraikan fail mengikut sambungan dan secara rekursif
  • readFileToString(Fail, Rentetan)
  • writeStringToFile(Fail, Rentetan)

IOUtils

  • closeQuietly(Reader/Writer/InputStream/OutputStream) - menutup aliran data
  • copy(InputStream, OutputStream) - salin dari satu aliran ke aliran yang lain