Spring Boot 2.0.9.RELEASE集成@CollectionCacheable启动失败如何解决
问题原因
该报错是Spring框架版本不兼容导致:
- 你当前使用的Spring Boot 2.0.9.RELEASE内置的
spring-context依赖版本为5.0.13.RELEASE collection-cacheable-for-spring-starter 1.2.0要求Spring框架版本≥5.1,它调用的CacheInterceptor.configure()方法是Spring 5.1才新增的API,在5.0.x版本中不存在,因此触发NoSuchMethodError。
解决方案
方案1:降级collection-cacheable依赖版本(无需调整现有框架版本,优先推荐)
该组件1.1.0版本是兼容Spring 5.0.x的最后一个正式版本,直接修改POM中对应依赖的版本号即可:
<dependency> <groupId>de.qaware.tools.collection-cacheable-for-spring</groupId> <artifactId>collection-cacheable-for-spring-starter</artifactId> <version>1.1.0</version> </dependency>
修改后刷新Maven依赖重启项目,即可正常使用@CollectionCacheable注解。
注意:降级到1.1.0版本后,核心的集合批量缓存查询、缺失值回写等功能不受影响,仅缺失1.2.0版本新增的少量边缘优化特性,完全满足常规业务需求。
方案2:升级Spring Boot版本(适合允许调整框架版本的场景)
将Spring Boot父依赖版本升级到2.1.0.RELEASE及以上,对应内置的spring-context版本≥5.1,即可兼容1.2.0版本的collection-cacheable组件。
注意:你当前使用的Spring Cloud Finchley系列仅适配Spring Boot 2.0.x,升级Spring Boot到2.1.x后需要同步将Spring Cloud版本调整为Greenwich系列,避免出现新的依赖兼容问题。
方案3:自行实现同类功能(不想引入第三方依赖时可选)
如果不想引入第三方组件,也可以手动实现集合批量缓存逻辑:
- 首先根据入参ID集合,批量查询缓存中已存在的KEY对应的值
- 筛选出缓存中缺失的ID,调用业务方法查询这部分数据
- 将新查询到的数据批量写入缓存后,合并已有缓存数据和新查询的数据返回即可。
内容的提问来源于stack exchange,提问作者TtBb
相关产品推荐
相关产品推荐

