• MP实战系列(十)之SpringMVC集成SpringFox+Swagger2


     该示例基于之前的实战系列,如果公司框架是使用JDK7以上及其Spring+MyBatis+SpringMVC/Spring+MyBatis Plus+SpringMVC可直接参考该实例。

    不过建议最好采用的是JDK8+Spring+MyBatis Plus+SpringMVC,因为本示例就是基于这个。

    之所以集成SpringFox+Swagger2,因为该特性由于之前的单SpringMVC集成Swagger。

    这一点,后面我会专门讲到的。

    一、导入依赖

        <!-- swagger api文档管理 -->
            <dependency>
                <groupId>com.mangofactory</groupId>
                <artifactId>swagger-springmvc</artifactId>
                <version>1.0.2</version>
            </dependency>
            
            <dependency>
                <groupId>com.mangofactory</groupId>
                <artifactId>swagger-models</artifactId>
                <version>1.0.2</version>
            </dependency>
            
            <dependency>
                <groupId>com.wordnik</groupId>
                <artifactId>swagger-annotations</artifactId>
                <version>1.3.11</version>
            </dependency>
            
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>15.0</version>
            </dependency>
            
            <!-- 集成springfox -->
            <dependency> 
              <groupId>io.springfox</groupId> 
              <artifactId>springfox-swagger2</artifactId> 
              <version>2.7.0</version> 
            </dependency> 
            
            <dependency> 
              <groupId>io.springfox</groupId> 
              <artifactId>springfox-swagger-ui</artifactId> 
              <version>2.7.0</version> 
            </dependency>

    二、编写SwaggerConfig.java

    package com.swagger;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    
    import springfox.documentation.builders.ApiInfoBuilder;
    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 yc
     */
    @Configuration
    @EnableSwagger2
    public class SwaggerConfig{
        @Bean
        public Docket api() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .select()
                    .apis(RequestHandlerSelectors.any())
                    .build()
                    .apiInfo(apiInfo());
        }
    
    
        private ApiInfo apiInfo() {
           
            return new ApiInfoBuilder()
                    .title("接口API管理文档")
                    .description("HTTP对外开放接口")
                    .version("1.0.0")
                    .termsOfServiceUrl("http://www.test.com")
                    .license("LICENSE")
                    .licenseUrl("http://www.test.com")
                    .build();
    
    
        }
    }

    三、在spring-mvc.xml文件补充该bean

    顾名思义该Bean的作用就是集成Swagger集成Spring

     <bean class="com.mangofactory.swagger.configuration.SpringSwaggerConfig" />  
        

    如果不添加该Bean就会出现如下情况:

    另外还有就是配置好bean运行项目后出现如图情况:

    描述的情况是:正在获取资源,不过需要延迟一段时间

    获取资源列表,加载缓慢,打不开,通常是浏览器的缘故,我用IE和火狐都可打开看到正常的API接口文档,但是用Google浏览器就始终打不开,这点目前不知道是什么原因,有待研究。

     另外关于swagger版本问题,如果是SpringMVC整合Swagger的话,建议使用2以上,3以下的版本,不然会出现如下图所示情况:

    Springmvc整合swagger的3以上版本出现上述问题

    原因:版本过低不能采用

    解决方案:使用低版本swagger即可恢复正常

    建议使用2.2.10的swagger版本

    如果是SpringBoot的话,直接使用swagger3以上的版本。SpringBoot使用swagger高版本不存在这种问题,之前我已经试验过了。

  • 相关阅读:
    [CF1336C] Kaavi and Magic Spell
    [CF1338C] Perfect Triples
    [CF1353F] Decreasing Heights
    [CF1442B] Identify the Operations
    [CF1354E] Graph Coloring
    [CF1364D] Ehab's Last Corollary
    php-fpm和fastcgi的区别
    phpredis实现互斥锁
    关于lnmp情况下PHP单线程的理解
    客户端断开链接以后 PHP执行过程实测
  • 原文地址:https://www.cnblogs.com/youcong/p/9255718.html
Copyright © 2020-2023  润新知