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

Spring Boot项目存在WebMvcConfigurationSupport时Swagger UI无法生成问题

问题原因
  • 这个问题和自定义转换器本身没有兼容问题,核心原因是你自定义的WebConfig继承了WebMvcConfigurationSupport类,会导致Spring Boot默认的Web MVC自动配置完全失效,其中就包括Swagger UI依赖的静态资源映射规则。
  • API文档的JSON接口能正常访问是因为它是后端接口映射,不受静态资源配置失效的影响,而Swagger UI是前端静态资源,找不到对应路径就会返回404。
解决办法

方案一(推荐):改用实现WebMvcConfigurer接口注册转换器

这种方式不会覆盖Spring Boot的默认自动配置,改动最小,代码如下:

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addFormatters(FormatterRegistry registry) {
        registry.addConverter(new SomeEnumConverter());
        registry.addConverter(new AnotherEnumConverter());
    }
}

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

如果你确实有必须继承WebMvcConfigurationSupport的业务场景,就手动补全Swagger UI的静态资源映射规则,代码如下:

@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
    @Override
    protected void addFormatters(FormatterRegistry registry) {
        registry.addConverter(new SomeEnumConverter());
        registry.addConverter(new AnotherEnumConverter());
    }

    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 配置swagger-ui静态资源映射
        registry.addResourceHandler("/swagger-ui/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/");
        // 配置通用webjars资源映射
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
        super.addResourceHandlers(registry);
    }
}
补充说明

Springfox 3.0.0已经停止维护多年,如果你后续升级Spring Boot高版本,大概率还会遇到其他兼容问题,可考虑替换为目前维护更活跃的springdoc-openapi组件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:39:03