You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SpringDoc WebFlux支持时无法显示Swagger/OpenAPI文档

解决Spring Boot WebFlux + SpringDoc Swagger UI的500/404问题

看起来你遇到的核心问题是同时引入了Servlet和Reactive Web依赖导致的容器冲突,再加上版本适配的小细节问题,咱们一步步来解决:

1. 移除冲突的Web依赖

你当前的依赖里同时包含了spring-boot-starter-web(Servlet栈)和spring-boot-starter-webflux(Reactive栈),这在Spring Boot里是大忌——Spring Boot会默认优先启用Servlet容器(比如Tomcat),但WebFlux的组件和SpringDoc的WebFlux适配在Servlet环境下会出现类加载冲突,直接导致了ServerHttpRequest接口无法实例化的500错误(接口本来就没有构造器,反射调用当然会失败)。

立刻从你的Gradle配置中移除spring-boot-starter-web,保留WebFlux相关依赖即可:

implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-webflux'
// 只保留WebFlux版本的SpringDoc依赖
implementation 'org.springdoc:springdoc-openapi-webflux-ui:1.4.4'

2. 验证版本兼容性

Spring Boot 2.3.3.RELEASE和springdoc-openapi-webflux-ui:1.4.4是兼容的,但如果后续还有小问题,可以尝试升级SpringDoc到1.5.10(这个版本对Spring Boot 2.3.x的支持更完善)。

3. 正确访问Swagger UI

移除冲突依赖后,重启应用,直接访问http://localhost:8080/swagger-ui.html就能正常打开了。之前的404问题是因为错误的URL参数,WebFlux版本的Swagger UI会自动加载配置,不需要手动指定configUrl。

4. 修复响应式端点的Schema显示问题

如果移除Web依赖后,返回Mono<T>的端点还是无法显示Schema,试试这几个办法:

  • 确保你的返回类型T是具体的POJO类,并且有完整的getter/setter(用Lombok的@Data注解能省不少事);
  • 在控制器方法上显式标注返回Schema,比如:
@GetMapping("/your-endpoint")
@Operation(summary = "获取数据", responses = {
    @ApiResponse(responseCode = "200", description = "请求成功", 
        content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, 
            schema = @Schema(implementation = YourPojo.class)))
})
public Mono<YourPojo> getData() {
    return yourService.fetchData();
}
  • 检查SpringDoc是否扫描到了你的控制器:可以在启动类上添加@OpenAPIDefinition注解,或者在application.yml/application.properties里配置扫描路径:
springdoc:
  packages-to-scan: com.yourpackage.controller

补充:为什么非响应式依赖能打开但显示不了Schema?

非响应式的springdoc-openapi-ui是为Servlet环境设计的,它无法正确解析WebFlux的Mono<T>/Flux<T>响应式包装类型,所以虽然能打开Swagger UI界面,但识别不了包装类里的实际业务对象Schema。

内容的提问来源于stack exchange,提问作者Gavin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 20:33:11