springboot整合swagger2打不开swagger-ui.html或者doc.html的问题记录
一.问题背景
用springboot整合swagger依赖,编译运行后,发现可以打开http://localhost:8888/swagger-ui.html这个页面(正常显示),却无法打开http://localhost:8888/doc.html这个页面,报错404。pom.xml文件导入依赖如下:
二.解决思路
通过搜索检阅发现需要导入swagger-bootstrap-ui这个依赖,导入依赖后依然访问不到doc.html这个页面。检查上述依赖是否完整导入(由于导入时网络不好),检查本地仓库依赖是否完整,git重置本地仓库到上个一个版本(git checkout),清除掉untracked的文件(git clean -df)。重新导入依赖,排除依赖导入不完整的情况下,依然出现上述问题。
通过查阅发现,需要为springmvc在写一个配置类,配置类如下:
@Configuration public class MyWebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOriginPatterns("*") .allowedHeaders("*") .allowCredentials(true) .allowedMethods("*"); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); } }
重写addResourceHandlers方法,添加resource location配置,重新编译后成功解决上述问题。(亲测有效)
网上其他解决思路:两个ui依赖去掉swagger-ui这个依赖,只用swagger-bootstrap-ui依赖,重新导入编译访问页面。(我觉得这个应该和两个ui版本过低互相有冲突有关,尽量导入较高版本的依赖,)