Apache Commons 提供成熟、高質量的工具庫,覆蓋 Bean 操作、CLI 解析、編解碼、集合增強、配置管理、連接池、文件上傳、HTTP 客戶端、IO 增強、JXPath、Lang 擴展、日誌門面、數學、網絡協議、驗證、虛擬文件系統、Email、對象池、XML 解析等領域。本文精選 20 大高頻組件,附核心用法速查。
| 組件 | Maven 坐標 | 核心場景 | 關鍵 API 示例 |
|---|---|---|---|
| BeanUtils | commons-beanutils | 屬性複製、表單綁定 | BeanUtils.copyProperties(dest, src) |
| CLI | commons-cli | 命令行參數解析 | Options options = new Options(); parser.parse(options, args) |
| Codec | commons-codec | Base64、URL、Digest 編解碼 | Base64.encodeBase64String(bytes) |
| Collections | commons-collections4 | 有序 Map、多值 Map、雙向 Map | OrderedMap map = new LinkedMap(); map.firstKey() |
| Configuration | commons-configuration2 | 多源配置管理 | PropertiesConfiguration config = new PropertiesConfiguration("app.properties") |
| DBCP2 | commons-dbcp2 | 數據庫連接池 | BasicDataSource ds = new BasicDataSource(); ds.setUrl(...); ds.getConnection() |
| DbUtils | commons-dbutils | JDBC 簡化、ResultSet 映射 | QueryRunner run = new QueryRunner(ds); run.query(sql, new BeanHandler<>(User.class)) |
| FileUpload | commons-fileupload | Servlet 文件上傳 | ServletFileUpload upload = new ServletFileUpload(factory); List items = upload.parseRequest(req) |
| HttpClient | httpclient (原 commons-httpclient) | HTTP 客戶端 | CloseableHttpClient client = HttpClients.createDefault(); client.execute(new HttpGet(url)) |
| IO | commons-io | 流操作、文件工具 | IOUtils.toString(inputStream); FileUtils.readLines(file, "UTF-8") |
| JXPath | commons-jxpath | 對象圖 XPath 查詢 | JXPathContext.newContext(obj).getValue("//order[amount>100]") |
| Lang3 | commons-lang3 | StringUtils、ObjectUtils、反射工具 | StringUtils.isBlank(str); ObjectUtils.defaultIfNull(obj, def) |
| Logging | commons-logging | 日誌門面 | Log log = LogFactory.getLog(MyClass.class); log.info("msg") |
| Math | commons-math3 | 統計、線性代數、優化 | DescriptiveStatistics stats = new DescriptiveStatistics(); stats.addValue(v); stats.getMean() |
| Net | commons-net | FTP、SMTP、Telnet、NNTP 等協議 | FTPClient ftp = new FTPClient(); ftp.connect(host); ftp.login(user, pass) |
| Validator | commons-validator | Email、日期、信用卡等格式驗證 | EmailValidator.getInstance().isValid(email) |
| VFS | commons-vfs2 | 統一文件系統訪問 | FileObject fo = VFS.getManager().resolveFile("sftp://user:pass@host/path") |
| commons-email | 郵件發送封裝 | Email email = new SimpleEmail(); email.setHostName("smtp"); email.send() | |
| Pool2 | commons-pool2 | 通用對象池框架 | GenericObjectPool |
| Digester | commons-digester | XML→對象映射(規則驅動) | digester.addObjectCreate("catalog/book", Book.class); digester.parse(xmlFile) |
org.apache.commons:commons-collections4)commons-httpclient,4.x+ 為 org.apache.httpcomponents:httpclient,API 不兼容commons-logging 需配合實現(Log4j2/Logback/SLF4J),建議直接用 SLF4J + 實現beanutils、collections、logging 传递依赖commons-lang3、commons-io、commons-collections4 作為基礎依賴