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

SpringDoc集成后访问swagger-ui.html返回404白标错误页问题

问题原因
  • 核心触发点是application.yml中路径匹配策略配置存在拼写错误:配置值ant_path_mathcher为错误拼写,正确值为ant_path_matcher。SpringBoot 2.6及以上版本默认使用PathPatternParser作为路径匹配策略,该策略无法正确匹配springdoc注册的Swagger UI静态资源路径;而拼写错误会导致自定义匹配策略配置完全不生效,最终静态资源映射失效返回404。
  • 能正常访问/v3/api-docs说明文档元数据接口本身运行正常,故障范围仅局限在Swagger UI的静态资源映射环节,和依赖引入无关。
  • 如果项目中存在自定义MVC配置(比如继承WebMvcConfigurationSupport、配置了全局拦截器未放行静态资源),会覆盖Spring Boot默认的静态资源映射规则,进一步放大该问题。
修复方案
  • 修正配置拼写错误
    将application.yml中的路径匹配配置改为正确值:
spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher
  • (可选,存在自定义MVC配置时操作)手动添加静态资源映射与拦截放行
    如果项目中存在自定义MVC配置类,手动补充Swagger相关资源的映射规则与拦截放行逻辑,参考代码如下:
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 显式映射Swagger UI静态资源路径
        registry.addResourceHandler("/swagger-ui/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/springdoc-openapi-ui/")
                .resourceChain(false);
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 注册自定义拦截器时,放行Swagger相关路径
        registry.addInterceptor(new 你的自定义拦截器())
                .excludePathPatterns(
                        "/swagger-ui/**",
                        "/v3/api-docs/**",
                        "/webjars/**"
                );
    }
}

注意:如果你的配置类是直接继承WebMvcConfigurationSupport而非实现WebMvcConfigurer,上述资源映射配置必须手动添加,否则默认静态资源映射会被完全覆盖。

  • 验证结果
    完全重启应用(不要使用热重载工具,避免配置未刷新)后,直接访问http://服务地址:端口/swagger-ui/index.html即可正常打开Swagger UI页面。/swagger-ui.html是旧版本Swagger的访问路径,springdoc 1.6.x版本无需使用该路径访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:06:21