升级Spring Boot 2.5.2后出现JpaEvaluationContextExtension不支持异常
问题根因
这个错误核心是Spring Boot 2.5.x配套的Spring Data版本收紧了反应式数据访问的SpEL上下文扩展校验规则。你项目中同时引入了*阻塞式Spring Data JPA依赖和反应式Spring Data Cassandra依赖,JPA自带的JpaEvaluationContextExtension属于阻塞式组件,不被反应式上下文支持,因此触发报错。
你替换block()为subscribe操作仍然报错,也直接验证了这个问题和反应式流的订阅/阻塞调用方式无关,是依赖与自动配置冲突导致。
解决方案
方案1:移除冗余JPA依赖(优先推荐)
检查项目的pom.xml(Maven)或build.gradle(Gradle)配置,确认是否存在spring-boot-starter-data-jpa依赖:
- 如果你项目本身不需要使用JPA做阻塞式数据库访问,直接移除该依赖即可解决问题。
方案2:排除JPA自动配置(必须保留JPA的场景使用)
如果业务确实需要同时使用JPA和反应式Cassandra,在Spring Boot启动类上排除JPA仓库的自动配置,避免JPA的扩展被加载到反应式上下文:
@SpringBootApplication(exclude = {JpaRepositoriesAutoConfiguration.class}) public class YourApplication { public static void main(String[] args) { SpringApplication.run(YourApplication.class, args); } }
如果需要更细粒度控制,可以自定义反应式SpEL上下文提供者,过滤掉JpaEvaluationContextExtension类型的扩展组件。
内容的提问来源于stack exchange,提问作者Adrien Ruffié
相关产品推荐
相关产品推荐

