SpringBoot2.0集成Swagger2访问404的解决操作
最近使⽤最新的SpringBoot2.0集成Swagger2的时候遇到⼀个问题,集成之后打开Swagger页⾯的时候出现404,后台提⽰不到swagger-ui的页⾯。
于是我看了下项⽬依赖swagger的结构:
可以看到 swagger-ui.html 在META-INF/resources⽬录下,所以我们需要⼿动的将静态资源路径指向这⾥,在java中配置为:import t.annotation.Bean;
import t.annotation.Configuration;
import org.springframework.fig.annotation.ResourceHandlerRegistry;
import org.springframework.fig.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("ller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("接⼝总览")
.description("测试")
.version("1.0")
.build();
}
/
**
* 防⽌@EnableMvc把默认的静态资源路径覆盖了,⼿动设置的⽅式
*
* @param registry
*/
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
// 解决静态资源⽆法访问
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/");
spring framework documentation}
}
在swagger的配置类中继承WebMvcConfigurationSupport,实现addResourceHandlers⽅法,设置静态资源可访问。
===== 2019.03.13更新 =====
有的同学说配置swagger后静态资源⽬录⽆法访问,我⾃⼰试了下,确实访问不了。原来的配置是:
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
// 解决swagger⽆法访问
registry.addResourceHandler("/**").addResourceLocations("classpath:/META-INF/resources/").setCachePeriod(0);
}
这⾥是将所有的请求都指向了META-INF/resources/⽬录,显然是不对的,会导致项⽬的其他静态⽂件⽬录⽆法正常访问,于是做了修改:
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
// 解决静态资源⽆法访问
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
访问正常,接下来再访问swagger:
也是正常的。
以上这篇SpringBoot2.0集成Swagger2访问404的解决操作就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。