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

Spring Boot 2.x升3.x(Java17)后WebFlux下Swagger UI异常排查

解决思路

1. 核对Swagger UI访问路径

SpringDoc OpenAPI 2.x(适配Spring Boot 3)的默认访问路径已从/swagger-ui.html变更为/swagger-ui/index.html,旧路径会直接返回静态HTML源码。可直接访问新路径测试,或在配置类中添加重定向规则:

@Bean
public RouterFunction<ServerResponse> swaggerRedirectRouter() {
    return route(GET("/swagger-ui.html"), req ->
            ServerResponse.temporaryRedirect(URI.create("/swagger-ui/index.html")).build()
    );
}

2. 确认依赖兼容性与完整性

  • 确保仅引入WebFlux专属的SpringDoc依赖,不要混合Servlet相关包,正确的依赖组合:
implementation 'org.springdoc:springdoc-openapi-starter-webflux-ui:2.5.0'
// 仅当需要手动扩展API模型时再引入api包,UI包已包含基础API依赖
// implementation 'org.springdoc:springdoc-openapi-starter-webflux-api:2.5.0'
  • 检查Spring Boot与SpringDoc版本匹配:Spring Boot 3.2.x对应SpringDoc 2.5.x;3.1.x对应2.2.x;3.0.x对应2.0.x,版本不匹配会引发各类兼容问题。

3. 修复资源处理器冲突

若自定义的addResourceHandlers配置覆盖了默认静态资源映射,会导致Swagger UI的静态资源无法被解析。可移除自定义资源处理器,或修改为包含Swagger资源路径:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/swagger-ui/**")
            .addResourceLocations("classpath:/META-INF/resources/webjars/swagger-ui/");
}

4. 校验OpenAPI Bean配置

确保OpenAPI Bean的元数据配置正确,错误的定义会导致UI无法加载API文档:

@Bean
public OpenAPI customOpenAPI() {
    return new OpenAPI()
            .info(new Info().title("WebFlux API 文档")
                    .version("1.0")
                    .description("基于Spring Boot 3的WebFlux接口文档"));
}

5. 排查全局过滤器/拦截器

项目中自定义的GlobalFilter或拦截器可能篡改响应内容,将Swagger动态请求误判为静态资源。可临时禁用所有自定义过滤器,测试是否恢复正常,再逐个排查冲突项。

6. 检查配置文件与权限

  • 确认application配置中未禁用SpringDoc自动配置:
springdoc:
  api-docs:
    enabled: true
  swagger-ui:
    enabled: true
  • 若启用Spring Security,需放行Swagger相关路径:
@Bean
public SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity http) {
    return http.authorizeExchange(exchanges -> exchanges
                    .pathMatchers("/swagger-ui/**", "/v3/api-docs/**").permitAll()
                    .anyExchange().authenticated()
            )
            .build();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 05:32:17