springboot整合Swagger2.9.2 以及404报错解决方案

解决springboot整合Swagger2.9.2

最近发现swagger挺好用的,就决定自己去整合swagger,然后好好学习一下。没想到出师不利,刚整合好就发现报404的错误。于是记录下来方便以后的学习和使用。

1.按照网上的帖子整合Swagger

1.1添加pom文件

  <!-- swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>

        <!-- swagger2 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>

1.2添加一个Swagger的配置类

@Configuration
@EnableSwagger2     //通过@EnableSwagger2注解启用Swagger2
public class Swagger {
    /**
     * @return Docket,这个Bean中,配置了映射路径和要扫描的接口的位置
     */
    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                //指定扫描的包路径
                .apis(RequestHandlerSelectors.basePackage("自己的controller的路径"))
                .paths(PathSelectors.any())
                .build()
        ;
    }

    /**
     * 获取Swagger2文档网站的信息,例如网站的title,网站的描述,联系人的信息,使用的协议等等。
     * @return
     */
    public ApiInfo apiInfo(){
        return new ApiInfoBuilder()
                .title("API文档")
                .description("用restful风格的接口")
                .termsOfServiceUrl("")
                .version("1.0")
                .build()
        ;
    }
}

1.3测试(http://localhost:8080/swagger-ui.html)

在这里插入图片描述

2.如果遇见404报错

2.1通用解决方案通过添加config配置文件


@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {
 
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
 
    }
}

备注:如果上述的解决方案不行可以尝试一下使用方案二

2.2方案二

2.2.1将Swagger上面的@EnableSwagger2的注解去掉
@Configuration   
public class Swagger {
    /**
     * @return Docket,这个Bean中,配置了映射路径和要扫描的接口的位置
     */
    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                //指定扫描的包路径
                .apis(RequestHandlerSelectors.basePackage("自己的controller的路径"))
                .paths(PathSelectors.any())
                .build()
        ;
    }

    /**
     * 获取Swagger2文档网站的信息,例如网站的title,网站的描述,联系人的信息,使用的协议等等。
     * @return
     */
    public ApiInfo apiInfo(){
        return new ApiInfoBuilder()
                .title("API文档")
                .description("用restful风格的接口")
                .termsOfServiceUrl("")
                .version("1.0")
                .build()
        ;
    }
}

2.2在启动类上添加上@EnableSwagger2注解

在这里插入图片描述

@EnableSwagger2
2.3测试

在这里插入图片描述
参考博客:
SpringBoot整合Swagger2
spring-boot2.0 整合 swagger2 (版本 2.9.2)及注意坑点


版权声明:本文为qq_45256805原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。