Spring Boot2.4.4集成Swagger2启动报PluginRegistry方法不存在如何解决
问题根因
你使用的Spring Boot 2.4.4版本内置的Spring HATEOAS组件,需要调用org.springframework.plugin.core.PluginRegistry类的of静态方法。但你引入的springfox 2.9.2版本依赖的是1.2.0.RELEASE版本的spring-plugin-core,该版本并未提供上述of方法,因此触发方法不存在的启动错误。
解决方案
你可以选择以下任意一种方案解决兼容性问题:
方案一:升级springfox到3.0.0适配高版本Spring Boot
springfox 3.0.0已经适配Spring Boot 2.4+版本,无需手动处理依赖冲突,操作步骤如下:
- 删掉pom.xml中原有两个springfox-swagger2、springfox-swagger-ui依赖,替换为官方提供的启动器:
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency>
- 修改SwaggerConfig配置类:将
@EnableSwagger2注解替换为@EnableOpenApi,可删除继承WebMvcConfigurationSupport的相关静态资源映射代码,3.0.0版本会自动完成资源配置。
方案二:保留springfox 2.9.2版本,手动排除冲突依赖
如果不想调整springfox大版本,可以手动排除低版本的spring-plugin-core,引入兼容的高版本:
- 在原有两个springfox依赖中添加排除规则:
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> <exclusions> <exclusion> <groupId>org.springframework.plugin</groupId> <artifactId>spring-plugin-core</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> <exclusions> <exclusion> <groupId>org.springframework.plugin</groupId> <artifactId>spring-plugin-core</artifactId> </exclusion> </exclusions> </dependency>
- 单独引入兼容版本的spring-plugin-core:
<dependency> <groupId>org.springframework.plugin</groupId> <artifactId>spring-plugin-core</artifactId> <version>2.0.0.RELEASE</version> </dependency>
该方案无需修改原有SwaggerConfig配置类,调整依赖后直接启动即可。
方案三:替换为SpringDoc(长期维护推荐)
springfox已经停止维护,更推荐使用适配性更好的SpringDoc作为接口文档工具,只需替换依赖即可:
<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-ui</artifactId> <version>1.6.14</version> </dependency>
无需额外配置类,启动后访问http://localhost:8080/swagger-ui.html即可查看接口文档。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

