Spring Boot 3.4.4中WebFlux+Netty环境下集成Swagger时/api-docs访问报错的问题求助
Spring Boot 3.4.4中WebFlux+Netty环境下集成Swagger时/api-docs访问报错的问题求助
老哥,我一眼就看到你问题的症结所在了——依赖冲突+版本不兼容,这在Spring Boot 3.x集成Swagger的时候特别容易踩坑,我来给你一步步捋清楚怎么解决:
核心问题分析
你现在的pom.xml里同时混了两个Swagger集成框架:Springfox 3.0.0和Springdoc 2.8.9,而且这俩版本和你的Spring Boot 3.4.4完全不搭:
- Springfox 3.0.0已经停止维护4年了,它只支持到Spring Boot 2.x,根本兼容不了基于Spring 6、Java 17的Spring Boot 3.x。
- 报错的
NoSuchMethodError就是依赖冲突导致的:Springfox带进来的旧版swagger-core没有OpenAPI(SpecVersion)这个构造方法,但Springdoc需要的新版swagger-core是有这个方法的,两个版本打架直接触发了错误。
一步到位的解决步骤
1. 彻底清理冲突依赖
把pom.xml里所有io.springfox开头的依赖全部删掉,包括:
springfox-boot-starterspringfox-swagger2springfox-swagger-ui
这些旧依赖不仅没用,还会拖垮整个依赖环境。
2. 修正依赖配置
保留WebFlux核心依赖,只留适配Spring Boot 3.x的Springdoc依赖就行,这里给你整理好的pom片段:
<!-- WebFlux核心依赖,默认用Netty作为服务器,正好符合你的需求 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency> <!-- Springdoc WebFlux UI,完美适配Spring Boot 3.x和WebFlux --> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webflux-ui</artifactId> <version>2.8.9</version> <!-- 和你的Spring Boot 3.4.4完全兼容 --> </dependency>
注意:不需要再单独引
spring-boot-starter-web了,spring-boot-starter-webflux已经包含了所有必要的Web层依赖,而且自动排除了Tomcat,默认用Netty。
3. 调整配置文件(可选但推荐)
你的application.properties基础配置没问题,可以补充几个常用配置让Swagger更好用:
# 启用API文档JSON接口 springdoc.api-docs.enabled=true # API文档JSON的访问路径 springdoc.api-docs.path=/api-docs # Swagger UI的访问路径 springdoc.swagger-ui.path=/swagger-ui.html # 设置默认API分组,匹配所有接口 springdoc.group-configs[0].group=default springdoc.group-configs[0].paths-to-match=/**
4. 启动验证
启动应用后,先访问http://localhost:8080/api-docs,应该能正常返回标准的OpenAPI JSON结构;然后访问http://localhost:8080/swagger-ui.html,就能看到熟悉的Swagger UI界面,还能直接测试你的WebFlux接口。
额外小提醒
- 以后写Swagger注解的时候,要用
io.swagger.v3.oas.annotations包下的注解(比如@Operation、@Parameter),别再用Springfox旧版的io.swagger.annotations了。 - 确保你的Java版本是17及以上,Spring Boot 3.4.4对Java版本有硬性要求哦。
内容来源于stack exchange
相关产品推荐
相关产品推荐

