升级Spring-Fox至OpenAPI后遇ReactiveTransactionManager类找不到错误
解决方案
问题的核心是依赖版本不兼容,具体包括Spring Boot starter版本混用、springdoc版本与Spring Boot版本不匹配,以及手动添加的依赖破坏了版本一致性,以下是具体修复步骤:
统一Spring Boot所有starter的版本
你当前混用了2.1.9.RELEASE和2.2.5.RELEASE的Spring Boot starter,这会导致依赖树中出现不同版本的Spring核心类,引发类找不到的问题。将spring-boot-starter-jdbc的版本修正为和其他starter一致的2.1.9.RELEASE。更换与Spring Boot 2.1.9兼容的springdoc版本
springdoc-openapi的版本与Spring Boot版本强绑定:- Spring Boot 2.1.x 对应 springdoc 1.4.x 系列
- Spring Boot 2.4+ 对应 springdoc 1.6.x 系列
你当前使用的1.6.14要求Spring Boot 2.4及以上,而你的Spring Boot 2.1.9依赖的是Spring 5.1.x,不包含ReactiveTransactionManager类(该类在Spring 5.2+才引入),因此需要降级springdoc到1.4.x版本,比如1.4.8。
移除手动添加的spring-tx和spring-jdbc依赖
spring-boot-starter-jdbc已经包含了spring-tx和spring-jdbc依赖,并且版本与Spring Boot完全对齐,手动添加不同版本的这些依赖会引发冲突,直接移除即可。
修正后的Gradle依赖配置如下:
implementation "org.springframework.boot:spring-boot:2.1.9.RELEASE" implementation "org.springframework.boot:spring-boot-starter-web:2.1.9.RELEASE" implementation "org.springframework.boot:spring-boot-starter-actuator:2.1.9.RELEASE" // 使用与Spring Boot 2.1.9兼容的springdoc版本 implementation 'org.springdoc:springdoc-openapi-ui:1.4.8' // 统一starter版本 implementation "org.springframework.boot:spring-boot-starter-jdbc:2.1.9.RELEASE"
执行gradle clean build刷新依赖后,问题应该可以解决。
内容的提问来源于stack exchange,提问作者har123
相关产品推荐
相关产品推荐

