Spring Boot与Redis整合报错:依赖版本是否存在兼容性问题?
Spring Boot 与 Redis 整合的版本兼容性问题解答
嗨,这个问题的核心绝对是版本兼容性不匹配——你选用的Spring Boot 1.5.10.RELEASE和Spring Data Redis 2.0.4.RELEASE根本不在同一个兼容轨道上,这也是你创建Redis Bean时报错的根源。
为什么会不兼容?
Spring Boot的spring-boot-starter-parent是个「版本管理器」,它会统一管控所有Spring生态组件的版本,避免出现依赖冲突:
- Spring Boot 1.5.x系列(比如你用的1.5.10)对应的是Spring Data Ingalls分支,匹配的Spring Data Redis版本应该是
1.13.x.RELEASE - 而Spring Data Redis 2.0.4属于Spring Data Kay分支,这个分支是专门为Spring Boot 2.0.x系列设计的,和Spring Boot 1.x依赖的核心框架(比如Spring Framework 4.3 vs 5.x)完全不兼容,强行组合必然会出现类找不到、方法签名不匹配等问题。
解决办法
你有两种可行的方案:
方案1:降级Spring Data Redis到匹配版本
不需要改动Spring Boot主版本,直接把Spring Data Redis的版本换成和Spring Boot 1.5.10对应的1.13.10.RELEASE即可:
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.13.10.RELEASE</version> </dependency>
方案2:升级Spring Boot到2.0.x系列
如果想用上Spring Data Redis 2.0.x的新特性,可以把Spring Boot的parent版本升级到2.0.4.RELEASE(和Spring Data Redis 2.0.4版本完全匹配),这样整个生态的依赖都会自动对齐:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.4.RELEASE</version> </parent>
小提醒:升级Spring Boot主版本可能需要调整部分代码(比如Spring MVC的API变化、配置文件格式调整等),记得做好测试哦。
额外小贴士
你遇到的Redis Bean创建报错(比如ClassNotFoundException、NoSuchMethodError)基本都是版本不兼容导致的。修改版本后,建议清理本地Maven仓库的缓存,重新构建项目,确保所有依赖都正确下载并生效。
内容的提问来源于stack exchange,提问作者Vincent




