Apache Commons 简介
当然,还是从历史说起吧!
这一切始于 1999 年代表 Apache 软件基金会 (ASF) 注册的“Apache Group”。基金会支持的项目是 1995 年至 1999 年间创建的 Apache HTTPD Web Server。
同样是 Jakarta Project(雅加达项目),它是 Sun Microsystems、IBM、Oracle 和来自 Apache 的家伙合作的结果。而在 2001 年的工作中,开发团队注意到他们经常编写相同的功能,有时他们只是简单地相互复制。这样的代码称为样板。他们设法收集了大量帮助开发人员的代码,但没有库来存储它们。
这就是 Jakarta Commons 项目的诞生方式,其中添加了 Java 组件(主要基于现有代码)。该项目后来更名为 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}是这个库的版本。
对于摇篮(常规):
implementation 'org.apache.commons:commons-lang3:3.12.0'
流行的 Apache 公共库
以下是最常用的类和方法的列表:
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
在这里你可以方便快捷地使用字符串、反射、序列化、对象和系统。让我们记下最常用的方法:
字符串工具
大量用于操作字符串的方法。
- is(Not)Blank/Empty(String) - 是时候忘记这种类型的检查了:if (s!=null && s.trim().length()>0),这里有一个很好的替代品
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 集合框架的库。
CollectionUtils是一个方便使用集合的类:
-
filter/find(Collection, Predicate) - 按谓词过滤和搜索 forAllDo(Collection, 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 中处理文件:
文件工具
- copyDirectory(File, File) - 复制目录
- copyFile(File, File) - 复制文件
- listFiles(File, String[], boolean) - 按扩展名递归列出文件
- readFileToString(文件,字符串)
- writeStringToFile(文件,字符串)
IOUtils
- closeQuietly(Reader/Writer/InputStream/OutputStream) - 关闭数据流
- copy(InputStream, OutputStream) - 从一个流复制到另一个
GO TO FULL VERSION