在 spring boot 項目中配置 Swagger2 忽然出現了 404 報錯, 究其緣由,是由於 MVC 沒有找到 swagger-ui 包中的 swagger-ui.html 文件; 如下就是 swagger2 的配置,及解決方案:html
一, 引入Maven :java
<dependency> <!-- API --> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.7.0</version> </dependency>
二, 編寫配置文件 :web
package com.gy.fast.common.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import io.swagger.annotations.ApiOperation; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; /** * Swagger2 API配置 * @author geYang * @date 2018-05-11 */ @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket createRestApi() { System.out.println("====== SWAGGER CONFIG ======"); return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()).select() .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("Fast 疾速開發 RESTful APIs") .description("快速上手,快速開發,快速交接") .contact(new Contact("geYang", "https://my.oschina.net/u/3681868/home", "572119197@qq.com")) .version("1.0.0") .build(); } }
到目前已經配置完成, 啓動項目訪問: http://localhost:${port}/${context-path}/swagger-ui.htmlspring
若是訪問成功,則不須要配置,若是訪問失敗, 報錯404, 則進行下面配置:api
三, 解決404報錯:ide
package com.gy.fast.common.config; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import java.util.List; /** * WebMvc配置 * @author geYang * @date 2018-05-14 */ @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/statics/**").addResourceLocations("classpath:/statics/"); // 解決 SWAGGER 404報錯 registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); } @Override public void extendMessageConverters(List<HttpMessageConverter<?>> converters) { } }
其原理就是幫助MVC找到 swagger-ui.html 及其 CSS,JS 對應的文件;ui