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

    再重启项目,问题解决。

  • 相关阅读:
    [o] SQLite数据库报错: Invalid column C
    startActivityForResult和setResult详解
    [o] duplicate column name: _id 问题解决
    [O] SQLite数据库报错:no such column
    [原创] SQLite数据库使用清单(下)
    [原创] SQLite数据库使用清单(上)
    iOS CocoaPods详解之 Analyzing dependencies
    iOS UILabe的详细使用及特殊效果
    一个简单的socket通信小demo
    iOS Lable给文字添加中划线和下划线
  • 原文地址:https://www.cnblogs.com/niew/p/14514921.html
Copyright © 2011-2022 走看看