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

Spring MVC从Springfox迁移springdoc-openapi-ui访问swagger-ui无映射如何解决

问题根因

你遇到的404报错核心是/swagger-ui/index.html路径的静态资源没有被正确映射,现有配置只覆盖了旧版swagger-ui.html路径,缺失了springdoc 1.5.x版本所需的新路径映射规则。

修复步骤

  1. 修正web.xml的静态资源映射
    原有配置只给/swagger-ui.html配置了default servlet映射,需要补充swagger-ui目录和相关资源的映射规则,避免静态资源被DispatcherServlet拦截:
<!-- 替换原有swagger相关的servlet-mapping -->
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/swagger-ui.html</url-pattern>
    <url-pattern>/swagger-ui/*</url-pattern>
    <url-pattern>/webjars/*</url-pattern>
    <url-pattern>/v3/api-docs/*</url-pattern>
</servlet-mapping>
  1. 更新WebConfig的资源处理器配置
    补充/swagger-ui/**路径的资源映射,同时新增开启springdoc的注解:
@Configuration
@EnableWebMvc
@EnableOpenApi // 新增该注解,开启springdoc自动配置能力
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(final ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        // 新增swagger-ui目录的资源映射
        registry.addResourceHandler("/swagger-ui/**")
                .addResourceLocations("classpath:/META-INF/resources/swagger-ui/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}
  1. 确认组件扫描范围
    确保你的Spring组件扫描配置包含了org.springdoc包,否则springdoc的相关Bean不会被初始化:
    如果是XML配置的组件扫描,补充如下配置:
<context:component-scan base-package="org.springdoc" />

如果是注解扫描,在配置类的@ComponentScan注解中添加org.springdoc包路径即可。
4. 版本兼容校验
springdoc-openapi-ui 1.5.8要求Spring Framework版本≥5.3,如果你的项目用的是Spring 4.x版本,请将springdoc版本降级到1.4.8即可适配。
修复完成后重启项目,访问{你的项目根路径}/swagger-ui.html会自动重定向到/swagger-ui/index.html,即可正常加载接口文档。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:45:00