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

SpringBoot3继承WebMvcConfigurationSupport后SwaggerUI无法访问问题

问题解决:Spring Boot 3继承WebMvcConfigurationSupport后Swagger UI返回404

问题原因

继承WebMvcConfigurationSupport会完全覆盖Spring Boot的Web自动配置逻辑,导致Swagger UI依赖的静态资源映射被丢弃。虽然通过Actuator能看到/swagger-ui.html的路径映射,但实际静态文件无法被Spring正确加载,因此返回404。

解决方案

方案一:手动添加Swagger UI静态资源映射

在你的WebConfig类中重写addResourceHandlers方法,手动配置Swagger UI所需的静态资源路径:

@Configuration
@EnableSpringDataWebSupport
public class WebConfig extends WebMvcConfigurationSupport {

    @Override
    protected RequestMappingHandlerMapping createRequestMappingHandlerMapping() {
        return new VersionedHandlerMapping();
    }

    @Override
    protected void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
        argumentResolvers.add(new PageableHandlerMethodArgumentResolver());
    }

    // 添加Swagger UI静态资源映射
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        super.addResourceHandlers(registry);
        // 映射Swagger UI的webjar资源
        registry.addResourceHandler("/swagger-ui/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/springdoc-openapi-ui/");
        // 确保API文档路径可访问(可选,若/v3/api-docs已正常访问可省略)
        registry.addResourceHandler("/v3/api-docs/**")
                .addResourceLocations("classpath:/META-INF/resources/");
    }
}

方案二:改用WebMvcConfigurer接口替代继承WebMvcConfigurationSupport

如果你的自定义配置不需要完全覆盖Web自动配置,推荐实现WebMvcConfigurer接口,它会与Spring Boot的自动配置逻辑兼容,无需手动处理静态资源:

@Configuration
@EnableSpringDataWebSupport
public class WebConfig implements WebMvcConfigurer {

    // 注册自定义RequestMappingHandlerMapping
    @Bean
    public RequestMappingHandlerMapping requestMappingHandlerMapping() {
        return new VersionedHandlerMapping();
    }

    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
        argumentResolvers.add(new PageableHandlerMethodArgumentResolver());
    }
}

验证

修改配置后重启应用,访问/swagger-ui.html即可正常加载Swagger界面,同时自定义的REST API配置也会保持生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 15:27:36