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);
        }
     }
    

    再重启项目,问题解决。

  • 相关阅读:
    c# Array.Sort() 对数组排列
    【软件配置】JDK+AndroidStudio4.1开发安卓APP环境安装和配置教程详细
    【QT】跨线程的信号槽(connect函数)
    【QT】QtConcurrent::run()+QThreadPool实现多线程
    【QT】继承QRunnable+QThreadPool实现多线程
    【QT】子类化QObject+moveToThread实现多线程
    【QT】子类化QThread实现多线程
    【QT】QThread源码浅析
    【C++】 C++异常捕捉和处理
    【QT】 Qt之QComboBox删除下拉item时出现段错误
  • 原文地址:https://www.cnblogs.com/niew/p/14514921.html
Copyright © 2011-2022 走看看