zoukankan      html  css  js  c++  java
  • springboot集成swagger2及需要注意的坑

    springboot集成swagger2及需要注意的坑

    1、springboot集成swagger2

    1.1 swagger的ui界面效果--简洁好用

    1.2 pom文件中添加swagger依赖

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

    1.3 编写相关配置类

    @Configuration
    @EnableSwagger2
    public class SwaggerConfig extends WebMvcConfigurationSupport {
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .pathMapping("/")
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.jerry.first.controller"))
                    .paths(PathSelectors.any()).build();
        }
    
        /**
         * 配置在线文档的基本信息
         * @return
         */
        public ApiInfo apiInfo(){
            return new ApiInfoBuilder()
                    .title("参数校验和统一异常处理Demo")
                    .description("用来演示参数校验和统一异常处理")
                    .termsOfServiceUrl("rudecrab.com")
                    .contact(new Contact("RudeCrab", "", "rudecrab@foxmail.com"))
                    .version("1.0")
                    .build();
        }
    
    }
    

    1.4 这样swagger2与springboot就集成完毕了。

    通过浏览器访问路径: http://localhost:8080/swagger-ui.html ,若顺利,就会出现文章开始的时候的这种界面。

    如果没有出现swagger的界面,此时可以看到控制台会报出 No mapping for GET /swagger-ui.html的错误,这时大概率时由于我们的项目中的其他自定义的配置类集成了WebMvcConfigurationSupport类,导致swagger的相应配置失效。。。

    解决办法:在swagger配置文件下重写WebMvcConfigurationSupport类的addResourceHandlers方法

    @Configuration
    @EnableSwagger2
    public class SwaggerConfig extends WebMvcConfigurationSupport {
        @Bean
        public Docket createRestApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .pathMapping("/")
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.jerry.first.controller"))
                    .paths(PathSelectors.any()).build();
        }
    
        /**
         * 配置在线文档的基本信息
         * @return
         */
        public ApiInfo apiInfo(){
            return new ApiInfoBuilder()
                    .title("参数校验和统一异常处理Demo")
                    .description("用来演示参数校验和统一异常处理")
                    .termsOfServiceUrl("rudecrab.com")
                    .contact(new Contact("RudeCrab", "", "rudecrab@foxmail.com"))
                    .version("1.0")
                    .build();
        }
        
     *************** 重写addResourceHandlers ************************************
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/**").addResourceLocations(
                    "classpath:/static/");
            registry.addResourceHandler("swagger-ui.html").addResourceLocations(
                    "classpath:/META-INF/resources/");
            registry.addResourceHandler("/webjars/**").addResourceLocations(
                    "classpath:/META-INF/resources/webjars/");
            super.addResourceHandlers(registry);
        }
     }
    

    再重启项目,问题解决。

  • 相关阅读:
    HTML if条件注释解读
    Springboot整合logback日志系统
    Springboot @Valid 参数校验
    JDK1.8 版的if else
    Android获取手机定位坐标
    CentOS8安装JDK
    Vue全局配置文件
    git学习
    百度前端面试题—基础
    前端知识网络
  • 原文地址:https://www.cnblogs.com/niew/p/14514921.html
Copyright © 2011-2022 走看看