解决Spring Boot中DelegatingLinkRelationProvider与PluginRegistry版本兼容问题
解决Spring Boot项目中
DelegatingLinkRelationProvider与PluginRegistry版本兼容问题 问题原因
你的项目基于Spring Boot 2.6.3开发,同时引入了旧版本的springfox-swagger2/springfox-swagger-ui(2.8.0),二者依赖的组件版本存在冲突:
- Spring Boot 2.6.x默认集成的
spring-plugin-core是2.x版本,spring-hateoas的DelegatingLinkRelationProvider依赖该版本的API; - 而springfox 2.8.0依赖的是
spring-plugin-core1.x版本,导致类路径中同时存在不兼容的版本,触发该错误。
解决方案
方案1:升级springfox到兼容版本(推荐)
springfox 3.0.0及以上版本适配Spring Boot 2.x,改用springfox的starter依赖,替换原有两个springfox依赖:
<!-- 删除原有的springfox-swagger2和springfox-swagger-ui依赖 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency>
方案2:强制统一spring-plugin-core版本(不推荐,可能引发其他冲突)
如果必须保留springfox 2.8.0,需排除Spring Boot自带的高版本spring-plugin-core,手动引入兼容的1.x版本:
<!-- 修改spring-boot-starter-data-rest依赖,排除自带的spring-plugin-core --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-rest</artifactId> <exclusions> <exclusion> <groupId>org.springframework.plugin</groupId> <artifactId>spring-plugin-core</artifactId> </exclusion> </exclusions> </dependency> <!-- 引入springfox 2.8.0兼容的spring-plugin-core版本 --> <dependency> <groupId>org.springframework.plugin</groupId> <artifactId>spring-plugin-core</artifactId> <version>1.2.0.RELEASE</version> </dependency>
方案3:替换为SpringDoc(长期推荐,springfox已停止维护)
SpringDoc是springfox的替代方案,完全兼容Spring Boot 2.x,且持续维护。删除所有springfox和swagger-annotations依赖,引入SpringDoc:
<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-ui</artifactId> <version>1.6.13</version> </dependency>
内容的提问来源于stack exchange,提问作者AasthaChaudhary
相关产品推荐
相关产品推荐

