Apache Commons 소개

물론 역사부터 시작합시다!

모든 것은 1999년 Apache Software Foundation(ASF)을 대신하여 "Apache Group"을 등록하면서 시작되었습니다. 재단에서 지원한 프로젝트는 1995년에서 1999년 사이에 생성된 Apache HTTPD 웹 서버였습니다.

Sun Microsystems, IBM, Oracle 및 Apache 직원의 협력 결과로 등장한 Jakarta Project (Jakarta 프로젝트)도 마찬가지였습니다. 그리고 2001년 작업 중에 개발 팀은 종종 동일한 기능을 작성하고 때로는 단순히 서로 복사하는 것을 발견했습니다. 이러한 코드를 상용구라고 합니다. 그들은 개발자에게 도움이 되는 많은 양의 코드를 수집했지만 이를 저장할 라이브러리가 없었습니다.

Java 구성 요소가 추가 된 Jakarta Commons 프로젝트가 탄생 한 방법입니다 (대부분 기존 코드 기반). 이 프로젝트는 나중에 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}은 이 라이브러리의 버전입니다.

Gradle(Groovy)의 경우:

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

인기 있는 Apache Commons 라이브러리

다음은 가장 많이 사용되는 클래스 및 메서드 목록입니다.

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

여기에서 문자열, 리플렉션, 직렬화, 개체 및 시스템을 편리하고 빠르게 사용할 수 있습니다. 가장 많이 사용되는 방법을 살펴보겠습니다.

StringUtils

문자열을 조작하는 수많은 방법.

  • is ( Not)Blank/Empty(String) - 이 유형의 검사를 잊어버릴 때입니다 .

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 Collections Framework를 완벽하게 보완하는 라이브러리입니다.

CollectionUtils 는 편리한 컬렉션 작업을 위한 클래스입니다.

    filter/find(Collection, Predicate) - 술어로 필터링 및 검색 forAllDo(Collection, Closure) - 각 요소에 대해 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 파일 작업에 도움이 됩니다.

FileUtils

  • copyDirectory(File, File) - 디렉토리 복사
  • copyFile(파일, 파일) - 파일 복사
  • listFiles(File, String[], boolean) - 확장자별 및 재귀적으로 파일 나열
  • readFileToString(파일, 문자열)
  • writeStringToFile(파일, 문자열)

IOUtils

  • closeQuietly(Reader/Writer/InputStream/OutputStream) - 데이터 스트림을 닫습니다.
  • copy(InputStream, OutputStream) - 한 스트림에서 다른 스트림으로 복사