一、基础核心 & 工具类库
基础工具
- Guava:Google 工具库,集合、缓存、字符串、并发、IO,Java 原生增强
- Hutool:国产全能工具包,日期、加密、文件、反射、HTTP,开箱即用
- Apache Commons
- commons-lang3:字符串、对象工具
- commons-collections4:集合工具
- commons-io:IO 文件操作
- commons-pool2:对象池
- MapStruct:Bean 映射,DTO<->Entity,编译期生成代码,性能远高于反射拷贝
- Lombok:注解简化代码,@Data/@Builder/@NoArgsConstructor,减少 get/set
- Caesar / Javassist / ByteBuddy:字节码操作,动态代理、AOP 底层
日期、序列化、JSON
- Jackson:Spring 默认 JSON 序列化,性能好
- Fastjson2:阿里 JSON 库(优先 v2,老 fastjson 存在安全漏洞)
- Gson:谷歌 JSON 库
- Protobuf / Avro / Thrift:二进制序列化,RPC、大数据传输
- java-time(JDK8+) :官方日期 API;
ThreeTen-Extra扩展日期工具
加密、编码
- BouncyCastle:密码学库,国密 SM2/SM3/SM4、各种加密算法
- Hutool Crypto:封装 AES、RSA、国密,简单易用
二、Web & Servlet 体系
- Spring Boot:快速开发单体 Web 应用,自动装配
- Spring MVC:Web 请求框架,控制器、参数解析、视图
- Undertow / Tomcat / Jetty:内嵌 Web 容器
- Spring WebFlux:响应式非阻塞 Web(Reactor)
- JAX-RS(Jersey):REST 规范实现
- OpenAPI / Swagger / Knife4j / SpringDoc :接口文档
- SpringDoc:SpringBoot3 推荐,替代老 swagger2
- Knife4j:美化 UI 增强版
三、数据访问 ORM & JDBC
- MyBatis :半 ORM,SQL 可控,国内最常用
- MyBatis-Plus:MyBatis 增强,CRUD 封装、分页、条件构造器
- Spring Data JPA:JPA 规范,面向对象,适合快速开发
- Hibernate:老牌 JPA 实现
- ShardingSphere:分库分表、读写分离、分布式数据库中间件(Sharding-JDBC/Proxy)
- Flyway / Liquibase:数据库版本迁移脚本管理
- HikariCP:SpringBoot 默认高性能 JDBC 连接池
- Druid:阿里连接池,带监控、防 SQL 注入
- PageHelper:MyBatis 分页插件
- Dynamic-Datasource:多数据源动态切换
四、微服务全家桶(Spring Cloud)
核心框架
- Spring Cloud :微服务规范;Spring Cloud Alibaba阿里生态微服务
注册中心 & 配置中心
- Nacos:注册中心 + 配置中心(SpringCloudAlibaba 主推)
- Eureka(已停更)、Consul、Zookeeper
- Apollo:携程分布式配置中心,配置灰度发布
- Spring Cloud Config:原生配置中心
网关
- Spring Cloud Gateway:Spring 官方响应式网关,替代 Zuul
- Zuul1/2:Netflix 网关(Zuul1 阻塞,不推荐新项目)
服务通信 & 熔断限流
- OpenFeign:声明式 HTTP 客户端,服务调用
- Dubbo:阿里高性能 RPC 框架,SpringCloud Alibaba 集成
- Sentinel:阿里流量控制、熔断降级、热点限流(推荐)
- Resilience4j:轻量熔断降级(替代 Hystrix)
- Hystrix(停止维护)
分布式事务
- Seata:阿里分布式事务,AT/TCC/SAGA/XA 模式,最常用
- TCC-Transaction 、ByteTCC
五、消息队列(MQ)客户端组件
- RocketMQ:阿里消息队列,rocketmq-client
- RabbitMQ:amqp-client / spring-amqp
- Kafka:kafka-clients,spring-kafka
- Pulsar:pulsar-client
- Spring Stream:统一 MQ 抽象层,切换 MQ 无需改业务代码
六、缓存组件
- Redis
- lettuce:SpringBoot2 + 默认 Redis 客户端(非阻塞)
- jedis:老客户端
- Redisson:Redis 分布式锁、分布式集合、分布式对象,功能极强
- Caffeine:JVM 本地缓存,高性能,Guava Cache 升级
- Ehcache:本地缓存,支持磁盘持久化
- Spring Cache:缓存抽象注解,@Cacheable,适配 Redis/Caffeine
七、搜索 & 大数据
- Elasticsearch:搜索引擎,客户端:HighLevelRestClient / Elasticsearch Java Client
- Canal:阿里 MySQL binlog 同步组件,监听数据库变更
- Flink / Spark Java API:实时、离线大数据计算
- Lucene:底层检索内核,ES 底层依赖
八、安全组件
- Spring Security:认证授权、OAuth2、JWT
- Sa-Token:国产轻量权限框架,登录、鉴权、单点登录、防重放,上手简单
- JJWT:JWT 生成解析
- Apache Shiro:老牌安全框架
- Hutool JWT:简易 JWT 工具
- BCrypt:密码哈希加密
九、定时任务 & 异步
- Quartz:强大定时任务,支持持久化
- XXL-Job:分布式定时任务平台(主流)
- Spring Task:Spring 自带 @Scheduled 简单定时
- PowerJob:分布式任务调度
- Spring @Async + ThreadPoolExecutor:异步线程池
- Disruptor:高性能无锁并发队列,高吞吐事件处理
十、文件、OSS、Excel/PDF 处理
- EasyExcel:阿里 Excel 读写,解决 POI 内存溢出
- POI:原生 Office 文档读写(大数据容易 OOM)
- iText / OpenPDF:PDF 生成
- Apache POI-OOXML:docx/pptx
- MinIO Java SDK / 阿里云 OSS / 腾讯 COS SDK:对象存储
- Tika:文档内容提取,解析 PDF、Word 等
十一、测试组件
- JUnit5(Jupiter):单元测试
- AssertJ:流式断言,比 JUnit 断言好用
- Mockito:Mock 依赖
- Testcontainers:本地拉起 Docker 容器做集成测试(MySQL/Redis)
- JMeter:压测工具
- SpringBootTest:Spring 集成测试
- Selenium / Playwright Java:UI 自动化
十二、监控、链路追踪、日志
日志
- SLF4J:日志门面;Logback(Spring 默认)、Log4j2
- Loki / ELK:日志收集体系
监控 & APM
- Spring Boot Actuator:应用健康、指标暴露端点
- Micrometer + Prometheus:指标采集,对接 Prometheus+Grafana
- SkyWalking:分布式链路追踪、APM(国产推荐)
- Sleuth + Zipkin:SpringCloud 链路追踪
- Pinpoint:APM 全链路监控
十三、其他常用中间件客户端
- Zookeeper Curator:zk 客户端,分布式锁、选举
- Redisson:Redis 分布式锁、分布式 ID
- Snowflake:雪花算法分布式 ID;百度 UidGenerator、美团 Leaf
十四、代码质量 & 构建工具
- Maven / Gradle:项目构建
- CheckStyle:代码规范
- SpotBugs:代码漏洞扫描
- SonarQube:代码质量平台
- Arthas:阿里 Java 在线诊断神器,线上排查问题
十五、信创适配常用组件
- 数据库:达梦、人大金仓、Vastbase、OceanBase 驱动
- 中间件:东方通、金蝶天燕、TongWeb 适配包
- 国密:BouncyCastle、国密算法工具
快速选型建议
- 单体后台:SpringBoot + MyBatis-Plus + Hutool + Lombok + SpringDoc + Redis
- 微服务:SpringCloudAlibaba (Nacos+Dubbo/Sentinel+Seata+Gateway)
- 分布式任务:XXL-Job
- 权限:Sa-Token 或 SpringSecurity
- Excel:EasyExcel
- 分布式锁:Redisson
SpringCloud Alibaba 微服务业务服务 pom(微服务业务模块,Nacos+Sentinel+Seata+Dubbo)
XML
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.5</version>
<relativePath/>
</parent>
<groupId>com.example</groupId>
<artifactId>cloud-service-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>cloud-service-demo</name>
<description>SpringCloudAlibaba微服务业务模块脚手架</description>
<properties>
<java.version>17</java.version>
<spring-cloud.version>2023.0.1</spring-cloud.version>
<spring-cloud-alibaba.version>2022.0.0.0</spring-cloud-alibaba.version>
<hutool.version>5.8.28</hutool.version>
<lombok.version>1.18.30</lombok.version>
<mybatis-plus.version>3.5.17</mybatis-plus.version>
<redisson.version>3.27.0</redisson.version>
<easyexcel.version>3.3.2</easyexcel.version>
<springdoc.version>2.5.0</springdoc.version>
<seata.version>1.8.0</seata.version>
<mapstruct.version>1.5.5.Final</mapstruct.version>
</properties>
<!-- 版本统一管理 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!-- Nacos 注册中心+配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- Dubbo RPC -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-dubbo</artifactId>
</dependency>
<!-- Sentinel 限流熔断 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<!-- Seata 分布式事务 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-all</artifactId>
<version>${seata.version}</version>
</dependency>
<!-- LoadBalancer 负载均衡 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<!-- OpenFeign 声明式http调用 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- 数据库 MyBatis-Plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Redis Redisson -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>${redisson.version}</version>
</dependency>
<!-- 工具类 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${mapstruct.version}</version>
</dependency>
<!-- EasyExcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>${easyexcel.version}</version>
</dependency>
<!-- SpringDoc接口文档 -->
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>${springdoc.version}</version>
</dependency>
<!-- 链路追踪 Skywalking 客户端(可选) -->
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<version>9.0.0</version>
<scope>runtime</scope>
</dependency>
<!-- Actuator监控 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<!-- 单元测试 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>UTF-8</encoding>
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>0.2.0</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
</project>
SpringCloud Gateway 网关单独 pom(网关工程)
XML
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.5</version>
<relativePath/>
</parent>
<groupId>com.example</groupId>
<artifactId>cloud-gateway</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>cloud-gateway</name>
<description>SpringCloud Gateway网关</description>
<properties>
<java.version>17</java.version>
<spring-cloud.version>2023.0.1</spring-cloud.version>
<spring-cloud-alibaba.version>2022.0.0.0</spring-cloud-alibaba.version>
<lombok.version>1.18.30</lombok.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- Gateway 响应式网关,不要引入spring-boot-starter-web! -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!-- Nacos 服务发现 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- Sentinel网关限流 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>