SpringBoot2.0集成Swagger2访问404的解决操作

 更新时间:2020年09月29日 09:18:27   作者:xqnode  
这篇文章主要介绍了SpringBoot2.0集成Swagger2访问404的解决操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

最近使用最新的SpringBoot2.0集成Swagger2的时候遇到一个问题,集成之后打开Swagger页面的时候出现404,后台提示找不到swagger-ui的页面。

于是我看了下项目依赖swagger的结构:

可以看到 swagger-ui.html 在META-INF/resources目录下,所以我们需要手动的将静态资源路径指向这里,在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把默认的静态资源路径覆盖了,手动设置的方式
   *
   * @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/");

  }
}

在swagger的配置类中继承WebMvcConfigurationSupport,实现addResourceHandlers方法,设置静态资源可访问。

设置完成后重启项目,就可以通过 http://localhost:8080/swagger-ui.html 正常访问了。

===== 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

启动项目访问 http://localhost:8080/index.html

访问正常,接下来再访问swagger:

也是正常的。

以上这篇SpringBoot2.0集成Swagger2访问404的解决操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring开发中自定义注解的使用详解

    Spring开发中自定义注解的使用详解

    这篇文章主要介绍了Spring开发中自定义注解的使用详解,在Java项目中,可以自定义注解,方便进行某些处理操作,提供开发效率,需要的朋友可以参考下
    2024-01-01
  • MyBatis使用雪花ID的实现

    MyBatis使用雪花ID的实现

    本文主要介绍了MyBatis使用雪花ID的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • Java如何获取HttpServletRequest请求参数

    Java如何获取HttpServletRequest请求参数

    我们常需要接口接收第三方推送的数据,由于第三方可能不具备开发能力,我们需要自行解析推送的数据格式,通过HttpServletRequest,我们可以解析字符串、JSON、XML以及文件等多种数据类型,本文介绍了如何在Java中使用HttpServletRequest获取请求参数,感兴趣的朋友一起看看吧
    2024-11-11
  • Maven的使用之继承与聚合

    Maven的使用之继承与聚合

    这篇文章主要为大家详细介绍了Maven的继承和聚合,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2023-04-04
  • JDK数组阻塞队列源码深入分析总结

    JDK数组阻塞队列源码深入分析总结

    在这篇文章当中,我们将通过源码仔细为大家介绍一下JDK具体是如何实现数组阻塞队列的,文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-08-08
  • SpringBoot多数据源配置的全过程记录

    SpringBoot多数据源配置的全过程记录

    在用SpringBoot开发项目时,随着业务量的扩大,我们通常会进行数据库拆分或是引入其他数据库,从而我们需要配置多个数据源,下面这篇文章主要给大家介绍了关于SpringBoot多数据源配置的相关资料,需要的朋友可以参考下
    2021-11-11
  • Java反射机制用法总结

    Java反射机制用法总结

    反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。下面我们来一起学习一下吧
    2019-05-05
  • java 查找list中重复数据实例详解

    java 查找list中重复数据实例详解

    这篇文章主要介绍了java 查找list中重复数据实例详解的相关资料,需要的朋友可以参考下
    2017-01-01
  • JAVA实现Excel和PDF上下标的操作代码

    JAVA实现Excel和PDF上下标的操作代码

    这篇文章主要介绍了JAVA实现Excel和PDF上下标,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • 查找jdk安装路径并且切换多版本jdk的详细步骤

    查找jdk安装路径并且切换多版本jdk的详细步骤

    在日常的工作学习中可能需要用到不同版本的jdk,下面这篇文章主要给大家介绍了关于查找jdk安装路径并且切换多版本jdk的详细步骤,文中介绍的非常详细,需要的朋友可以参考下
    2024-01-01

最新评论