Redisson 与 Spring Boot 版本冲突:3 步定位依赖冲突根因并恢复启动
【免费下载链接】redissonRedisson: Valkey & Redis Java Client and Real-Time Data Platform. Sync/Async/RxJava/Reactive API. Over 50 Valkey and Redis based Java objects and services: Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Bloom filter, Spring, Tomcat, Scheduler, JCache API, Hibernate, RPC, local cache..项目地址: https://gitcode.com/GitHub_Trending/re/redisson
在使用 Redisson Spring Boot 集成的项目里,某天启动突然挂掉,堆栈里出现NoClassDefFoundError: org/springframework/boot/autoconfigure/data/redis/DataRedisProperties。如果你正卡在 Redisson 与 Spring Boot 版本冲突上,按下面的链路走一遍。
先做甄别:这真的是版本冲突,还是环境问题
动手改依赖之前,用三步排除误诊:
- 看堆栈里缺失的类名。缺失的是
org.springframework...下的类(如DataRedisProperties、RedisProperties),且你近期没动过 Spring 侧配置,大概率是版本冲突。 - 如果是
RedisConnectionException、UnknownHostException或连接超时,那是网络或地址配置问题,与依赖版本无关,别在依赖树上花时间。 - 如果报
NoSuchMethodError: org.redisson...,先怀疑项目里同时存在两个大版本的 Redisson 类库,再谈其他。
一句话判断标准:堆栈里找不到某个 Spring 类,而你显式依赖的 Spring 版本里明明有它,就是冲突。
如何用依赖树定位 Redisson 传递依赖冲突
🔍 两条命令先跑起来:
mvn dependency:tree -Dincludes=org.redisson mvn dependency:tree -Dincludes=org.springframework.data:*,org.springframework.boot:*读结果时盯三处:
redisson-spring-data-x的 x 与你的 Boot 大版本是否对齐。官方 Spring 集成文档 给出了对应关系:16/17/18 模块对应 Boot 1.3–1.5,2x 系列对应 2.x,3x 系列对应 3.x,4x 系列对应 4.x。- 是否有重复版本。同一个 artifact 出现两个版本时,加
-Dverbose重跑,看是谁把它拉进来的——通常是 spring-boot-dependencies 之外的第三方 BOM。 - 自动配置类的代际是否匹配。starter 里为不同 Boot 代际准备了不同的自动配置类,如 RedissonAutoConfiguration 与 RedissonAutoConfigurationV4,后者 import 的
DataRedisProperties只存在于 Boot 3.4+ / 4.x。报错类所在的代际和你的 Boot 版本对不上,基本就是根因。
顺带一提:redisson-spring-boot-starter 的 pom 中spring-boot.version属性,可参考当前发布线适配的是哪一代 Boot。
决策框架:该升级、该降级还是该固定版本
不要盲猜版本,按上一步的结论选路径:
| 你的现状 | 建议动作 |
|---|---|
| Boot 大版本一致,minor 偏旧 | 同一大版本内升级 Boot minor,或显式固定匹配 minor 的redisson-spring-data模块 |
| Boot 大版本比 Redisson 当前支持更新 | 升级 Redisson 到 starter 面向该 Boot 大版本发布的版本 |
| 第三方 BOM 拉错了 Spring Data 版本 | 在父 pom 的dependencyManagement里固定版本,不依赖传递版本 |
典型场景:Boot 仍是 2.7,但 starter 默认带了 4x 的 spring-data 模块。处理方式参考官方文档给出的做法——排除新模块、显式引入旧模块:
implementation ("org.redisson:redisson-spring-boot-starter:xVERSIONx") { exclude group: 'org.redisson', module: 'redisson-spring-data-40' } implementation "org.redisson:redisson-spring-data-27:xVERSIONx"原则只有一条:项目里redisson-spring-data-*只保留一个大版本,且必须与你的 Boot 大版本对齐。
改完之后怎么验证,以及如何避免复现
修复后按三步收尾:
- 重跑
mvn dependency:tree -Dincludes=org.redisson,确认 spring-data 模块只剩一个版本。 - 启动应用,确认
RedissonClientbean 正常创建,日志无BeanCreationException。 - 做一次冒烟:取一个
Bucket读写一次,或加锁释放一次锁,验证不只是容器起来了,客户端功能也确实可用。
预防上:把redisson-spring-boot-starter及redisson-spring-data的版本统一放进父 pom 的dependencyManagement;项目里引入 Spring Cloud 等 BOM 后,每次升级 Boot 前先跑一遍依赖树。Spring 各模块的兼容对应关系,以 官方集成文档 为准,比任何博客都可靠。
【免费下载链接】redissonRedisson: Valkey & Redis Java Client and Real-Time Data Platform. Sync/Async/RxJava/Reactive API. Over 50 Valkey and Redis based Java objects and services: Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Bloom filter, Spring, Tomcat, Scheduler, JCache API, Hibernate, RPC, local cache..项目地址: https://gitcode.com/GitHub_Trending/re/redisson
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考