一.問題背景
用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版本過低互相有沖突有關,盡量導入較高版本的依賴,)