Spring MVC从Springfox迁移springdoc-openapi-ui访问swagger-ui无映射如何解决
问题根因
你遇到的404报错核心是/swagger-ui/index.html路径的静态资源没有被正确映射,现有配置只覆盖了旧版swagger-ui.html路径,缺失了springdoc 1.5.x版本所需的新路径映射规则。
修复步骤
- 修正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>
- 更新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/"); } }
- 确认组件扫描范围
确保你的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
相关产品推荐
相关产品推荐

