SpringBoot2.0集成Swagger2訪問404的解決操作
最近使用最新的SpringBoot2.0集成Swagger2的時候遇到一個問題,集成之后打開Swagger頁面的時候出現(xiàn)404,后臺提示找不到swagger-ui的頁面。
于是我看了下項目依賴swagger的結(jié)構(gòu):

可以看到 swagger-ui.html 在META-INF/resources目錄下,所以我們需要手動的將靜態(tài)資源路徑指向這里,在java中配置為:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* @author xiaqing
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurationSupport {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.xqnode.controller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("接口總覽")
.description("測試")
.version("1.0")
.build();
}
/**
* 防止@EnableMvc把默認(rèn)的靜態(tài)資源路徑覆蓋了,手動設(shè)置的方式
*
* @param registry
*/
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
// 解決靜態(tài)資源無法訪問
registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
// 解決swagger無法訪問
registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
// 解決swagger的js文件無法訪問
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
在swagger的配置類中繼承WebMvcConfigurationSupport,實現(xiàn)addResourceHandlers方法,設(shè)置靜態(tài)資源可訪問。
設(shè)置完成后重啟項目,就可以通過 http://localhost:8080/swagger-ui.html 正常訪問了。
===== 2019.03.13更新 =====
有的同學(xué)說配置swagger后靜態(tài)資源目錄無法訪問,我自己試了下,確實訪問不了。原來的配置是:
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
// 解決swagger無法訪問
registry.addResourceHandler("/**").addResourceLocations("classpath:/META-INF/resources/").setCachePeriod(0);
}
這里是將所有的請求都指向了META-INF/resources/目錄,顯然是不對的,會導(dǎo)致項目的其他靜態(tài)文件目錄無法正常訪問,于是做了修改:
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
// 解決靜態(tài)資源無法訪問
registry.addResourceHandler("/**")
.addResourceLocations("classpath:/static/");
// 解決swagger無法訪問
registry.addResourceHandler("/swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
// 解決swagger的js文件無法訪問
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
測試一下:
在resource的static文件夾下新建index.html

啟動項目訪問 http://localhost:8080/index.html

訪問正常,接下來再訪問swagger:

也是正常的。
以上這篇SpringBoot2.0集成Swagger2訪問404的解決操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java如何獲取HttpServletRequest請求參數(shù)
我們常需要接口接收第三方推送的數(shù)據(jù),由于第三方可能不具備開發(fā)能力,我們需要自行解析推送的數(shù)據(jù)格式,通過HttpServletRequest,我們可以解析字符串、JSON、XML以及文件等多種數(shù)據(jù)類型,本文介紹了如何在Java中使用HttpServletRequest獲取請求參數(shù),感興趣的朋友一起看看吧2024-11-11
SpringBoot多數(shù)據(jù)源配置的全過程記錄
在用SpringBoot開發(fā)項目時,隨著業(yè)務(wù)量的擴大,我們通常會進行數(shù)據(jù)庫拆分或是引入其他數(shù)據(jù)庫,從而我們需要配置多個數(shù)據(jù)源,下面這篇文章主要給大家介紹了關(guān)于SpringBoot多數(shù)據(jù)源配置的相關(guān)資料,需要的朋友可以參考下2021-11-11
java 查找list中重復(fù)數(shù)據(jù)實例詳解
這篇文章主要介紹了java 查找list中重復(fù)數(shù)據(jù)實例詳解的相關(guān)資料,需要的朋友可以參考下2017-01-01
JAVA實現(xiàn)Excel和PDF上下標(biāo)的操作代碼
這篇文章主要介紹了JAVA實現(xiàn)Excel和PDF上下標(biāo),本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09

