首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Apache Commons 工具箱精選:20 個高頻組件的實戰速查手冊

     編輯:Java 相關知識

前言:不要重複造輪子

Apache Commons 提供成熟、高質量的工具庫,覆蓋 Bean 操作、CLI 解析、編解碼、集合增強、配置管理、連接池、文件上傳、HTTP 客戶端、IO 增強、JXPath、Lang 擴展、日誌門面、數學、網絡協議、驗證、虛擬文件系統、Email、對象池、XML 解析等領域。本文精選 20 大高頻組件,附核心用法速查。

核心組件速查表

組件Maven 坐標核心場景關鍵 API 示例
BeanUtilscommons-beanutils屬性複製、表單綁定BeanUtils.copyProperties(dest, src)
CLIcommons-cli命令行參數解析Options options = new Options(); parser.parse(options, args)
Codeccommons-codecBase64、URL、Digest 編解碼Base64.encodeBase64String(bytes)
Collectionscommons-collections4有序 Map、多值 Map、雙向 MapOrderedMap map = new LinkedMap(); map.firstKey()
Configurationcommons-configuration2多源配置管理PropertiesConfiguration config = new PropertiesConfiguration("app.properties")
DBCP2commons-dbcp2數據庫連接池BasicDataSource ds = new BasicDataSource(); ds.setUrl(...); ds.getConnection()
DbUtilscommons-dbutilsJDBC 簡化、ResultSet 映射QueryRunner run = new QueryRunner(ds); run.query(sql, new BeanHandler<>(User.class))
FileUploadcommons-fileuploadServlet 文件上傳ServletFileUpload upload = new ServletFileUpload(factory); List items = upload.parseRequest(req)
HttpClienthttpclient (原 commons-httpclient)HTTP 客戶端CloseableHttpClient client = HttpClients.createDefault(); client.execute(new HttpGet(url))
IOcommons-io流操作、文件工具IOUtils.toString(inputStream); FileUtils.readLines(file, "UTF-8")
JXPathcommons-jxpath對象圖 XPath 查詢JXPathContext.newContext(obj).getValue("//order[amount>100]")
Lang3commons-lang3StringUtils、ObjectUtils、反射工具StringUtils.isBlank(str); ObjectUtils.defaultIfNull(obj, def)
Loggingcommons-logging日誌門面Log log = LogFactory.getLog(MyClass.class); log.info("msg")
Mathcommons-math3統計、線性代數、優化DescriptiveStatistics stats = new DescriptiveStatistics(); stats.addValue(v); stats.getMean()
Netcommons-netFTP、SMTP、Telnet、NNTP 等協議FTPClient ftp = new FTPClient(); ftp.connect(host); ftp.login(user, pass)
Validatorcommons-validatorEmail、日期、信用卡等格式驗證EmailValidator.getInstance().isValid(email)
VFScommons-vfs2統一文件系統訪問FileObject fo = VFS.getManager().resolveFile("sftp://user:pass@host/path")
Emailcommons-email郵件發送封裝Email email = new SimpleEmail(); email.setHostName("smtp"); email.send()
Pool2commons-pool2通用對象池框架GenericObjectPool pool = new GenericObjectPool<>(factory)
Digestercommons-digesterXML→對象映射(規則驅動)digester.addObjectCreate("catalog/book", Book.class); digester.parse(xmlFile)

選型避坑指南

  • 版本陷阱:Commons Collections 3.x 有已知反序列化漏洞,**必須升級 4.x** (groupId: org.apache.commons:commons-collections4)
  • HttpClient 更名:3.x 為 commons-httpclient,4.x+ 為 org.apache.httpcomponents:httpclient,API 不兼容
  • Logging 綁定:commons-logging 需配合實現(Log4j2/Logback/SLF4J),建議直接用 SLF4J + 實現
  • 依傳遞:Digester 需 beanutils、collections、logging 传递依赖

實戰建議

  1. 項目引入 commons-lang3、commons-io、commons-collections4 作為基礎依賴
  2. 特定場景(FTP、Email、CLI)按需引入對應組件
  3. 優先查閱官網 User Guide,API 設計極具一致性
  4. 關注組件更新日誌,及時修復安全漏洞
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved