Java 主流框架 / 中间件 30 组对比表格

Spring 全家桶、ORM、缓存、RPC、定时任务、网关、测试、日志、权限等

1. Spring MVC vs Spring WebFlux

表格

对比维度Spring MVCSpring WebFlux
编程模型同步阻塞 Servlet 模型异步响应式 Reactor/Netty 非阻塞
底层容器Tomcat/Jetty Servlet 容器Netty 异步服务器,也可兼容 Servlet
线程模型一线程一请求,阻塞 IO少量线程处理大量并发连接
阻塞 API 适配完美适配 JDBC、同步 RPC同步阻塞 IO 会耗尽有限线程池
适用场景传统 CRUD、同步数据库业务、中小并发高并发网关、大量长连接、流式推送
学习成本低,Java 开发者通用习惯高,需掌握响应式编程、背压

2. MyBatis vs MyBatis-Plus

表格

对比维度原生 MyBatisMyBatis-Plus(MP)
CRUD 能力仅基础 SQL 映射,通用增删改查需手写 XML内置 BaseMapper,单表无 SQL 即可 CRUD
分页功能手动编写分页 SQL、分页参数封装内置分页插件,自动分页、count 优化
条件构造器无,全部依赖 XML / 注解 SQLLambda QueryWrapper,防硬编码字段名
逻辑删除、自动填充需自行封装拦截器开箱即用配置,自动填充创建人 / 时间
多表关联原生友好,XML 灵活多表 join多表弱支持,复杂关联建议手写 XML
版本兼容独立框架,无 Spring 绑定基于 MyBatis 二次封装,无缝兼容 SpringBoot

3. MyBatis vs JPA(Hibernate)

表格

对比维度MyBatisSpring Data JPA (Hibernate 底层)
SQL 控制权完全手写 SQL,高度可控,优化方便自动生成 SQL,复杂 SQL 难调优
学习门槛中等,熟悉 SQL 即可上手高,需理解实体映射、持久态、一级缓存
多表复杂查询优势明显,XML 自由拼接关联复杂 join、子查询代码繁琐
快速开发单表重复 CRUD 模板代码多单表零 SQL,快速实现基础业务
数据库迁移无自动 DDL,适配多库无兼容坑自动建表,不同数据库方言易出现字段差异
性能调优SQL 可见,慢 SQL 快速定位自动生成 SQL,隐性全表查询难排查

4. Spring Data Redis vs Jedis

表格

对比维度Spring Data Redis原生 Jedis
封装程度高度封装,Template 工具类原生 Redis 命令 API,无封装
连接池管理自动集成 Lettuce/Jedis 连接池需手动配置连接池、资源释放
序列化方案内置 Jackson、Jdk 序列化,可自定义仅字符串 / 字节操作,序列化自行实现
响应式支持Lettuce 底层支持 Reactor 响应式Jedis 仅同步阻塞
SpringBoot 适配自动配置,yml 一键配置需手动创建 JedisPool、销毁资源
分布式锁无内置工具,自行封装无分布式锁工具类

5. Lettuce vs Jedis(Redis 客户端)

表格

对比维度LettuceJedis
IO 模型Netty 异步非阻塞,线程安全同步阻塞,多线程需多连接 / 池
连接复用单个连接可多线程共享多线程共用同一连接会线程不安全
资源开销长连接,少量连接支撑大量并发高并发需大量连接,占用端口
响应式 API原生支持 Reactor 异步调用仅同步阻塞接口
事务 / 管道支持异步 pipeline 事务同步管道、事务
SpringBoot 默认SpringBoot2.x 默认客户端SpringBoot1.x 老版本默认

6. Dubbo vs Spring Cloud OpenFeign

表格

对比维度DubboOpenFeign(SpringCloud)
通信协议自定义 Dubbo 二进制协议,高效HTTP/JSON 通用协议
注册中心Nacos/Zookeeper/ApolloNacos/Eureka/Consul
负载均衡内置多种均衡、权重灰度依赖 SpringCloud LoadBalancer
性能二进制序列化,吞吐量高,延迟低HTTP 报文头大,性能弱于 Dubbo
跨语言仅 Java 生态友好,跨语言差HTTP 标准,支持所有开发语言
网关适配配套 Dubbo 网关适配 Spring Cloud Gateway

7. Spring Cloud Gateway vs Zuul1

表格

对比维度Spring Cloud GatewayZuul 1.x
底层线程Netty 异步非阻塞,响应式同步 Servlet 阻塞一线程一请求
并发能力支持高并发、长连接、流式推送并发量高时线程耗尽,性能瓶颈
过滤器模型GlobalFilter、路由过滤器灵活链式Pre/Post 简单过滤器,拓展弱
Spring 版本SpringBoot2、WebFlux 原生适配仅 SpringBoot1 兼容,已停止维护
内置功能限流、熔断、重写路径内置需手动整合 Hystrix 限流熔断
性能高并发场景吞吐量是 Zuul 数倍中小并发可用,大流量不推荐

8. Nacos vs Eureka(注册配置中心)

表格

对比维度NacosEureka
核心能力注册中心 + 分布式配置中心二合一仅服务注册发现,无配置管理
一致性算法AP+CP 切换,支持持久化纯 AP 设计,保证可用性,无强一致
权重灰度原生支持权重、灰度路由无原生灰度,需自行拓展
持久化MySQL 持久化实例、配置信息内存存储,重启数据丢失
监控告警内置服务健康监控、推送变更仅基础健康检查,无推送机制
生态适配Dubbo、SpringCloud 双生态兼容仅 SpringCloud 生态

9. Nacos vs Apollo(配置中心)

表格

对比维度NacosApollo
功能范围配置中心 + 注册中心一体专注分布式配置中心,无注册功能
权限管控基础命名空间权限,简单精细化项目、环境、用户角色权限
灰度发布简易灰度,按 IP / 权重精准灰度、分批发布、回滚记录完整
存储介质MySQL 存储配置多数据库分层存储,隔离性更强
变更推送长连接实时推送配置变更长连接推送,推送日志完整审计
运维复杂度部署简单,单服务启动组件多(Portal/Admin/Config)运维成本高

10. Hystrix vs Resilience4j(熔断降级)

表格

对比维度HystrixResilience4j
维护状态Netflix 停止维护,不再更新持续活跃更新,SpringCloud2 主推
底层依赖RxJava1 老旧版本基于 Java8 函数式,轻量无重型依赖
功能组件熔断、限流、降级、隔离舱熔断、限流、重试、超时、信号量隔离
线程模型独立线程池隔离,开销大信号量隔离为主,资源消耗低
Spring 适配SpringCloud1 默认组件SpringCloud2 官方推荐,适配 WebFlux
体积依赖包庞大,冗余类多轻量化,极小依赖体积

11. Quartz vs XXL-Job(定时任务)

表格

对比维度Quartz 原生框架XXL-Job 分布式定时任务
部署模式单机 / 集群数据库锁,无统一控制台中心化调度平台,Web 可视化控制台
运维操作代码 / 数据库修改任务,无界面页面新增、启停、重试、日志查看
分布式防重依赖数据库锁表实现,性能差中心化调度,天然分片、广播任务
失败策略自行编写失败重试、告警逻辑内置失败重试、邮件 / 钉钉告警
执行日志需自行记录入库持久化完整执行日志,检索分页
接入成本原生 API 繁琐,需配置表结构SpringBoot 一键 starter,零配置快速接入

12. JUnit 4 vs JUnit 5(Jupiter)

表格

对比维度JUnit4JUnit5
架构设计单体耦合框架模块化分层:平台、引擎、API 解耦
注解体系@Test、@Before、@After 老旧注解全新 @BeforeEach、@BeforeAll 等标准化注解
扩展机制运行 Rule 拓展能力弱Extension 强大拓展模型,替代 Rule
Java 版本兼容 Java5+最低 Java8,支持 Lambda、流式断言
参数化测试第三方依赖原生内置参数化测试
Spring 整合SpringTest 老旧适配Spring 6 原生深度适配,支持 WebFlux 测试

13. Logback vs Log4j2(日志框架)

表格

对比维度LogbackLog4j2
性能同步日志性能优秀,轻量异步零垃圾 GC,高并发吞吐量更高
依赖关系Slf4j 原生实现,作者同源独立实现,桥接适配 Slf4j
配置文件xml/groovy 简洁配置xml/json/yaml 多格式,插件丰富
异步模型阻塞队列异步无锁 RingBuffer 异步,低延迟
内存开销轻量,低内存占用高并发场景内存优化更好
漏洞风险历史无高危远程漏洞旧版存在远程代码执行漏洞,需升级

14. Spring Security vs Shiro(权限框架)

表格

对比维度Spring SecurityApache Shiro
Spring 适配Spring 全家桶原生深度集成兼容 Spring,适配度弱于 Security
功能完整性OAuth2、OIDC、RBAC、会话管理一体化基础认证授权,OAuth 需自行拓展
并发会话控制原生踢人、在线会话管控会话管理需手动封装
学习成本高,大量过滤器链概念低,API 简洁易懂,上手快
前后端分离原生支持 Token、JWT 适配无原生 JWT,需自定义过滤器
性能过滤器链路多,轻微损耗轻量,拦截链路简单

15. JWT vs Session(前后端认证)

表格

对比维度JWT 无状态令牌服务端 Session 会话
存储位置全部信息存储客户端 Token会话数据存储服务端内存 / Redis
分布式天然分布式,无需共享存储分布式需 Redis 共享 Session
过期控制Token 内置过期时间,无法主动失效服务端可手动销毁会话、踢下线
带宽消耗每次请求携带完整载荷,报文更大仅传输简短 SessionId,体积小
数据安全载荷明文存储敏感信息不可放敏感数据存在服务端,更安全
刷新机制需单独刷新 Token 接口服务端自动续期,无需额外接口

16. Elasticsearch vs Redis(检索缓存)

表格

对比维度ElasticsearchRedis
核心定位全文检索、复杂聚合分析内存 KV 高速缓存、临时存储
查询能力分词、模糊、范围、聚合、分组仅简单 key/Hash/ZSet 基础查询
持久化磁盘持久化,海量数据存储RDB/AOF 持久化,不适合亿级海量文本
写入延迟磁盘写入,延迟相对高纯内存操作,读写纳秒级延迟
分片扩容原生分布式分片集群Redis Cluster 分片集群,仅 KV 分片
适用场景日志检索、商品模糊搜索、报表统计热点缓存、分布式锁、限流计数器

17. RabbitMQ vs Kafka(消息中间件)

表格

对比维度RabbitMQApache Kafka
底层模型交换机、队列、绑定,灵活路由分区日志流模型,简单分区存储
吞吐量万级吞吐量,适合复杂路由百万级高吞吐,海量日志首选
可靠性完善生产者 / 消费者确认机制,消息不丢副本同步刷盘保证高可靠
延迟队列原生支持延迟消息插件无原生延迟,依赖时间轮方案
消息堆积大量堆积内存暴涨易 OOM磁盘顺序存储,百万堆积无压力
适用场景业务异步通知、订单复杂路由、延迟任务日志采集、大数据流、高吞吐异步解耦

18. EasyExcel vs POI(Excel 解析导出)

表格

对比维度Alibaba EasyExcelApache POI
内存模型逐行 SAX 流式读取,低内存一次性加载全 Sheet 到内存,大数据 OOM
大数据支持十万 / 百万行无堆溢出风险上万行极易堆内存溢出
API 简洁度极简注解绑定实体,开箱即用大量底层 Workbook/Sheet 模板代码
性能读写速度快,GC 压力小内存开销大,频繁 GC 卡顿
功能拓展自定义转换器、合并单元格完善底层功能全面,拓展代码量大
版本坑版本稳定,坑少旧版存在内存泄漏、公式计算 bug

19. Hutool vs Guava(工具类)

表格

对比维度HutoolGoogle Guava
语言生态国产 Java 全场景工具,贴合国内业务Google 开源通用基础工具库
覆盖范围加密、文件、Excel、验证码、线程池、日期集合、缓存、并发、基础字符串
中文适配完美支持中文、中文日期、中文加密对中文无特殊优化
依赖体积整合大量工具,包体积更大轻量化,专注基础底层工具
更新维护国内持续高频更新,适配国产框架稳定低频更新,API 极少变动
企业场景中小型业务项目一站式工具底层基础组件、开源中间件通用依赖

20. Swagger2 vs Knife4j(接口文档)

表格

对比维度Springfox Swagger2Knife4j (Swagger 增强 UI)
底层依赖原生 Swagger 规范实现基于 Swagger OpenAPI 二次封装增强
UI 界面基础简陋页面,无增强功能离线文档、全局搜索、导出 Markdown
认证支持基础 token 参数配置全局认证一键填充,调试更友好
SpringBoot 适配高版本 SpringBoot 存在兼容 bug持续更新适配 SpringBoot3、JDK17
生产防护无原生接口屏蔽配置支持生产环境关闭文档入口
拓展功能拓展能力弱字典枚举解析、离线文档下载

21. Redisson vs 原生 RedisTemplate 分布式锁

表格

对比维度RedissonSpring Data RedisTemplate 手动实现锁
锁实现封装 Lua 脚本,可重入锁、读写锁、红锁自行编写 Lua,仅简易互斥锁
自动续期看门狗自动续期防死锁无自动续期,业务超时直接锁失效
失效防死锁锁释放兜底,避免宕机永久持有锁宕机则锁永久存在,需设置过期时间
代码侵入一行 API 获取锁,简洁大量 Lua 脚本、过期时间、释放模板代码
分布式方案单机锁、主从红锁、集群锁齐全仅支持单机 Redis,集群锁实现复杂

22. PageHelper MP 分页 vs 原生 MyBatis 分页

表格

对比维度PageHelperMyBatis-Plus 内置分页插件
使用方式ThreadLocal 存储分页参数,静态方法Lambda 分页参数,绑定 Mapper 查询
多数据源多数据源需手动清理分页参数多数据源自动隔离,无污染
count 优化支持 countSql 自定义优化自动识别 join,优化 count 语句
Lambda 支持无 Lambda 条件构造器QueryWrapper 链式 Lambda 条件分页
嵌套分页嵌套查询易出现分页错乱多层嵌套分页兼容性更好
维护状态独立开源分页插件MP 内置,随 MP 统一更新维护

23. Flyway vs Liquibase(数据库版本管理)

表格

对比维度FlywayLiquibase
脚本格式原生 SQL 脚本,上手简单XML/YAML/JSON/SQL 多格式变更集
学习成本极低,直接写业务 SQL高,需学习专用变更标签语法
回滚能力仅清理,无精准版本回滚支持指定版本回滚、变更追溯
复杂 DDL原生 SQL 适配所有数据库方言统一语法自动适配多数据库
企业规范适合中小项目简单版本迭代多环境、多数据库复杂适配大型项目

24. SpringDoc OpenAPI3 vs Springfox Swagger2

表格

对比维度SpringDoc OpenAPISpringfox Swagger2
OpenAPI 规范兼容 OpenAPI3 最新标准仅兼容老旧 OpenAPI2
SpringBoot3/JDK17原生完美支持停止维护,完全不兼容高版本
注解体系复用 Jakarta 新注解依赖过时 javax 包,高版本报错
依赖维护持续迭代更新,无兼容 bug长期停止更新,大量兼容性问题
响应类解析自动识别泛型、嵌套 DTO泛型、复杂泛型解析失效

25. Seata TCC vs AT 模式(分布式事务)

表格

对比维度Seata AT 模式Seata TCC 模式
代码侵入极低,仅 @GlobalTransactional 注解侵入极高,需编写 Try/Confirm/Cancel 三阶段接口
实现原理自动拦截 SQL 生成 undo_log 回滚日志手动编写资源预留、确认、补偿逻辑
适配场景普通单库 CRUD、无复杂资源锁定库存冻结、资金预留等强隔离业务
隔离级别全局读未提交,存在脏读风险自定义隔离逻辑,隔离性可控
开发速度快速接入,零业务改造开发量大,开发周期长

26. Sa-Token vs Spring Security(轻量权限)

表格

对比维度Sa-TokenSpring Security
接入成本极低,yml 简单配置开箱即用大量过滤器、配置类,学习曲线陡
功能范围登录认证、权限、单点登录、防重放、JWT 一体化认证授权基础能力,单点需整合 OAuth2
前后端分离原生适配无状态 Token,自动跨域跨域、Token 需大量自定义配置
依赖体积轻量化,极小第三方依赖依赖 Spring 全家桶,包体积庞大
微服务原生支持分布式会话、网关鉴权分布式会话需整合 Redis/Session 共享

27. Druid vs HikariCP(数据库连接池)

表格

对比维度Druid 阿里连接池HikariCP SpringBoot 默认池
性能优化内置监控、防 SQL 注入过滤器极致轻量化,零开销高性能
监控面板内置 Web 监控页面,SQL 慢查询统计无内置监控,需自行埋点
过滤拓展支持 SQL 拦截、防火墙、日志过滤仅基础连接管理,拓展能力弱
内存占用功能多,内存开销略高极简设计,内存占用极低
并发性能高并发稳定,防泄漏并发吞吐量业界顶尖,无锁设计
SpringBoot需手动引入依赖配置Boot2 默认内置,自动装配

28. Actuator Spring 监控 vs Prometheus Micrometer

表格

对比维度Spring Boot ActuatorMicrometer + Prometheus
数据输出HTTP 端点 JSON 格式标准 Prometheus 指标格式,时序数据库适配
可视化仅基础端点,无图表展示搭配 Grafana 大盘、告警规则完整监控体系
指标类型基础 JVM、线程池、HTTP 请求指标计数器、计时器、直方图多维度指标
告警能力无原生告警机制Prometheus AlertManager 配置告警推送
微服务单机监控为主集群统一指标收集,分布式监控首选

29. MapStruct vs BeanUtils(实体转换)

表格

对比维度MapStructSpring BeanUtils / Hutool BeanUtil
实现原理编译期生成转换实现类,无反射运行时反射赋值,性能差
性能接近手动 get/set,无反射损耗大量反射,循环转换 GC 压力大
类型校验编译期类型不匹配直接报错运行时才抛出转换异常,难以提前发现
自定义转换注解自定义转换器,编译生效运行时自定义转换器,代码繁琐
空值处理编译配置全局空值策略运行时空值易空指针,需手动判空

30. Canal vs DataX(数据同步中间件)

表格

对比维度CanalDataX
同步原理监听 MySQL binlog 增量同步全量 / 增量定时读取数据库批量同步
实时性毫秒级实时数据同步定时任务,分钟级延迟
数据量适合增量实时同步,增量变更海量全量数据离线迁移,批量导入
数据源仅适配 MySQL binlogMySQL/Oracle/ES/FTP 多数据源互相同步
资源消耗低,仅监听日志无查询压力全量查询占用数据库 IO、CPU
业务场景缓存更新、分库同步、实时数据推送离线数仓同步、历史数据迁移
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值