在Spring Boot项目中,通过继承 spring-boot-starter-parent 来管理依赖是常见做法,但其内置的依赖管理范围有时无法满足复杂的开发需求。本文将分享一个经过实战整理的Maven依赖管理方案,它继承自官方Parent,并集成了文件处理、网络通信、数据持久化等企业开发中常用的高质量依赖库,旨在提升项目配置的灵活性与开发效率。
使用方式
您可以通过两种方式引入此依赖管理包。
方式一:定义为项目父级依赖
在项目的 pom.xml 中使用 <parent> 标签。
<parent>
<groupId>io.github.pangju666</groupId>
<artifactId>pangju-dependencies</artifactId>
<version>1.0.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
方式二:通过 dependencyManagement 导入
在项目的 pom.xml 中使用 <dependencyManagement> 标签引入。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.github.pangju666</groupId>
<artifactId>pangju-dependencies</artifactId>
<version>1.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
项目继承关系
本项目直接继承自 Spring Boot 官方 Parent (spring-boot-starter-parent:3.4.3),确保了与Spring Boot生态的完全兼容。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.4.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
依赖管理详解
以下分类介绍了此依赖管理包中包含的核心库及其简要评价。
IO操作
- commons-io (2.18.0): Apache Commons项目下的经典IO工具库,极大简化了文件、流操作。
- commons-exec (1.4.0): 用于更强大、灵活地执行外部进程或Shell脚本,比原生
Runtime.exec() 更易用。
文件处理
- commons-compress (1.27.1): 支持ZIP、TAR、GZIP等多种压缩格式的读写。(注:处理7z格式需额外引入
org.tukaani:xz 依赖)。
- commons-csv (1.13.0): 简单强大的CSV文件读写库。
- fastexcel (1.1.0): EasyExcel的新版本,专注于高性能读写Excel文件(XLSX格式)。
- poi-tl (1.12.2): 基于POI的Word模板引擎,通过标签语法动态生成
.docx文档,比直接操作POI便捷。
- poi / poi-oomxl (5.4.0): Apache POI核心库,分别用于操作旧版(.doc, .xls, .ppt)和新版Office Open XML格式(.docx, .xlsx, .pptx)文件。
- pdfbox (3.0.4): 功能全面的PDF处理库,支持创建、解析、加密等操作。(注:处理特定图片格式需引入
jbig2-imageio 和 jai-imageio-jpeg2000 等拓展包)。
- fontbox / xmpbox (3.0.4): PDFBox的子模块,分别用于字体处理和XMP元数据操作,通常随PDFBox引入。
- tika-core (3.1.0): 强大的文件内容类型(MIME-Type)和元数据解析工具,支持超千种格式。(需配合
tika-parsers-standard-package 使用)。
图像处理
- metadata-extractor (2.19.0): 从JPEG、PNG等图片中提取EXIF、IPTC等元数据。
- thumbnailator (0.4.20): 简单易用的缩略图生成库,支持缩放、旋转、裁剪等。
- jai-imageio-core (1.4.0) / jbig2-imageio (3.0.4): 图像IO扩展库,常与Apache PDFBox配合处理PDF中的图片。
网络通信
- commons-net (3.11.1): 实现了FTP、SMTP、POP3等基础网络协议的客户端。
- resilience4j-bom (2.3.0): 轻量级容错库,提供熔断、限流、重试等模式。可整体引入
resilience4j-spring-boot3,或单独使用如 resilience4j-ratelimiter。
集合与数学运算
- commons-collections4 (4.4.0): 对Java集合框架的增强,提供了多种实用集合类和工具。
- commons-math3 (3.6.1): 提供丰富的数学计算和统计分析功能。
- commons-numbers-core (1.2): 基础数学运算补充,如复数、分数等。
- big-math (2.3.2): 为
BigDecimal提供高级数学函数(幂、开方、对数、三角函数等)。
字符串与加密
- commons-text (1.13.0): 提供字符串相似度计算、转义等高级文本处理工具。
- commons-crypto (1.2.0): 高性能加密库,封装了JCE和OpenSSL。(注:不支持非对称加密)。
- jasypt (1.9.3): 简化加密操作,内置多种加密器实现,API设计友好。(注:不支持非对称加密)。
XML与对象映射
- dom4j (2.1.4): 灵活强大的XML处理库,支持XPath查询。
- mapstruct (1.6.3): 类型安全、高性能的对象映射代码生成器,优于反射实现的Bean拷贝工具。
反射与鉴权
- reflections (0.10.2): 运行时扫描类路径元数据,用于反向查询类、方法、注解等信息,非常适合框架或库开发。
- java-jwt (4.5.0): 用于生成和验证JWT(JSON Web Token)的轻量级库。
- sa-token-bom (1.40.0): 国产轻量级权限认证框架,功能丰富,API设计简洁,可与Spring Boot集成。
并发与缓存
- disruptor (4.0.0): 高性能无锁内存队列,可作为内存内的极速消息中间件。
- expiringmap (0.5.11): 支持条目自动过期的Map实现,适合用作内存缓存。
数据访问与中间件
- redisson (3.45.0) / redisson-spring-boot-starter (3.45.0): Redis高级客户端,提供分布式锁、分布式集合等丰富功能,并提供了Spring Boot Starter便于集成。对于需要与多种数据库/中间件交互的复杂应用场景,合理的依赖管理至关重要。
- dynamic-datasource-spring-boot3-starter (4.3.1): Spring Boot 3.x动态数据源切换组件,方便实现多租户、读写分离。
- mybatis-plus-bom (3.5.10.1) / mybatis (3.5.19): MyBatis增强工具包及其兼容的核心版本,显著提升单表操作效率。在构建以Java和Spring Boot为核心的现代后端服务时,高效的数据访问层是基石。
- p6spy (3.9.1): 数据库访问拦截器,用于在开发测试环境输出完整可执行的SQL日志。
- spring-vault-core (3.3.1.2): 用于集成HashiCorp Vault,安全地访问和管理敏感配置信息。
其他工具
- commons-validator (1.9.0): 通用验证器库,适用于参数校验等场景。
- commons-configuration2 (2.11.0): 统一的应用程序配置管理框架。
- guava (33.4.0-jre): Google提供的核心Java工具库,涵盖集合、缓存、字符串处理等。
测试
- spock-core / spock-spring (2.4-M5-groovy-4.0): 基于Groovy的优雅测试框架,支持BDD风格,并能与Spring测试完美集成。
插件管理
- smart-doc-maven-plugin (3.0.9): 基于Java注释生成API文档的Maven插件,支持OpenAPI规范。
- gmavenplus-plugin (4.1.1): 用于在Maven项目中编译和运行Groovy代码,常与Spock测试框架配合使用。
|