美文网首页IT之不夜城
Swagger2+SpringMVC 集成教程

Swagger2+SpringMVC 集成教程

作者: zhaovov | 来源:发表于2017-02-24 23:56 被阅读4396次

    # Swagger2 SpringMVC集成(非SpringBoot)

    Swgger

    做过手机端接口的同学们都有过历史的经历,写完一个接口之后,Junit测试调试过后,需要在接口文档中详细的去编写给客户端开发同学看的一份文档,而且稍微不注意就有可能写错一个字母,下面来段单口相声(PS: 不会单口相声的程序员不是好产品!!!)

    场景:APP活动接口
    任务:我,APP开发者
    时间:及其困乏的下午

    我:Hi,哥们,接口开发好了,文档已经在git上面更新。
    APP开发者:恩,我来请求一下。
    ......大约半分钟后...
    APP开发者:接口请求不到。
    我:(内心:怎么可能,我都单元测试过了,我确信我看的都是绿的啊,绿的啊,)你是不是写的有问题,自己检查一下哈(PS:怎么可能是我的问题)。

    ........大约一分钟后......
    APP开发者:请求不到。

    APP开发者:请求不到。

    APP开发者: 请求不到。

    我: 我来看一下(PS :我也是客户端开发者),没什么问题,怎么就请求不到呢,好吧我笑而不语的把/INfo 修改成/info SUCCESS !

    也许上面的经历你也经历过,我也只是说明一下有这么中情况,事情是真实的,剧情嘛~ 每一个程序员都是一个优秀的导演,哈哈哈 ~ 下面切入整体,介绍一下怎么把Swagger2 和 SpringMVC 结合,看到最后的结果,你就知道Swagger2的有点了。
    Swagger官网

    集成步骤

    • 构建Maven工程
    • 添加Swagger2依赖
             <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.5.0</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>2.5.0</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>2.8.6</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.8.6</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>2.8.6</version>
            </dependency>
    
    * 配置Swagger2
    
            @Component
            @Configuration
            @EnableSwagger2
            @EnableWebMvc
            @ComponentScan("com.zhaoshuai.controller")
            public class Swagger2Config {
                @Bean
                public Docket createAPI() {
                    return new Docket(DocumentationType.SWAGGER_2).forCodeGeneration(true).select().apis(RequestHandlerSelectors.any())
                            //过滤生成链接
                            .paths(PathSelectors.any()).build().apiInfo(apiInfo());
                }
            
                private ApiInfo apiInfo() {
            
                    Contact contact=new Contact("赵帅","http://blog.maileba.top","zhaoshuaivov@163.com");
                    ApiInfo apiInfo = new ApiInfoBuilder().license("Apache License Version 2.0").title("Swagger 集成测试").description("Swagger API Teste").contact(contact).version("1.0").build();
            
                    return apiInfo;
                }
            
            }
    
    
    
    
    * 设置spring-mvc.xml
    
    
    <mvc:default-servlet-handler />
    <mvc:resources location="classpath:/META-INF/resources/" mapping="swagger-ui.html"/>
    <mvc:resources location="classpath:/META-INF/resources/webjars/" mapping="/webjars/**"/>
    
    
    
    
    *  验证 http://ip:prot/project_name/swagger-ui.html 如果没有project_name 则省去
        
    ![Paste_Image.png](https://img.haomeiwen.com/i1477250/fe043120f9c8e279.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    
    
    
    
    ###附录
    *  pom.xml
    
           <?xml version="1.0" encoding="UTF-8"?>
          <project xmlns="http://maven.apache.org/POM/4.0.0"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-    4.0.0.xsd">
           <modelVersion>4.0.0</modelVersion>
    
           <groupId>Swagger</groupId>
           <artifactId>swagger</artifactId>
           <version>1.0-SNAPSHOT</version>
           <dependencies>
           <dependency>
               <groupId>org.springframework</groupId>
               <artifactId>spring-webmvc</artifactId>
               <version>4.3.5.RELEASE</version>
           </dependency>
    
           <dependency>
               <groupId>org.springframework</groupId>
               <artifactId>spring-web</artifactId>
               <version>4.3.5.RELEASE</version>
           </dependency>
    
           <dependency>
               <groupId>org.springframework</groupId>
               <artifactId>spring-webmvc-portlet</artifactId>
               <version>4.3.5.RELEASE</version>
           </dependency>
    
           <dependency>
               <groupId>org.springframework</groupId>
               <artifactId>spring-expression</artifactId>
               <version>4.3.5.RELEASE</version>
           </dependency>
    
           <dependency>
               <groupId>org.springframework</groupId>
               <artifactId>spring-aop</artifactId>
               <version>4.3.5.RELEASE</version>
           </dependency>
           <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
           <dependency>
               <groupId>org.springframework</groupId>
               <artifactId>spring-core</artifactId>
               <version>4.3.5.RELEASE</version>
           </dependency>
    
           <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
           <dependency>
               <groupId>org.springframework</groupId>
               <artifactId>spring-context</artifactId>
               <version>4.3.5.RELEASE</version>
           </dependency>
           <!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects -->
           <dependency>
               <groupId>org.springframework</groupId>
               <artifactId>spring-aspects</artifactId>
               <version>4.3.5.RELEASE</version>
           </dependency>
    
    
    
           <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
           <dependency>
               <groupId>javax.servlet</groupId>
               <artifactId>javax.servlet-api</artifactId>
               <version>3.1.0</version>
               <scope>provided</scope>
           </dependency>
    
           <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
           <dependency>
               <groupId>org.aspectj</groupId>
               <artifactId>aspectjweaver</artifactId>
               <version>1.8.9</version>
           </dependency>
    
           <!-- https://mvnrepository.com/artifact/asm/asm -->
           <dependency>
               <groupId>asm</groupId>
               <artifactId>asm</artifactId>
               <version>3.3.1</version>
           </dependency>
    
           <!-- https://mvnrepository.com/artifact/asm/asm-commons -->
           <dependency>
               <groupId>asm</groupId>
               <artifactId>asm-commons</artifactId>
               <version>3.3.1</version>
           </dependency>
    
    
    
           <dependency>
               <groupId>org.springframework</groupId>
               <artifactId>spring-test</artifactId>
               <version>4.3.5.RELEASE</version>
           </dependency>
    
    
    
           <!-- https://mvnrepository.com/artifact/junit/junit -->
           <dependency>
               <groupId>junit</groupId>
               <artifactId>junit</artifactId>
               <version>4.12</version>
               <scope>test</scope>
           </dependency>
    
           <dependency>
               <groupId>io.springfox</groupId>
               <artifactId>springfox-swagger2</artifactId>
               <version>2.6.1</version>
           </dependency>
           <dependency>
               <groupId>io.springfox</groupId>
               <artifactId>springfox-swagger-ui</artifactId>
               <version>2.6.1</version>
           </dependency>
    
           <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
           <dependency>
               <groupId>com.fasterxml.jackson.core</groupId>
               <artifactId>jackson-core</artifactId>
               <version>2.8.6</version>
           </dependency>
    
           <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
           <dependency>
               <groupId>com.fasterxml.jackson.core</groupId>
               <artifactId>jackson-databind</artifactId>
               <version>2.8.6</version>
           </dependency>
           <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
           <dependency>
               <groupId>com.fasterxml.jackson.core</groupId>
               <artifactId>jackson-annotations</artifactId>
               <version>2.8.6</version>
           </dependency>
    
    
           <dependency>
               <groupId>org.apache.commons</groupId>
               <artifactId>commons-lang3</artifactId>
               <version>3.4</version>
           </dependency>
    
    
    
    
       </dependencies>
    
    
    
    
    
    
       <repositories><!-- 代码库 -->
           <!--<repository>-->
               <!--<id>maven-ali</id>-->
               <!--<url>http://maven.aliyun.com/nexus/content/groups/public//</url>-->
               <!--<releases>-->
                   <!--<enabled>true</enabled>-->
               <!--</releases>-->
               <!--<snapshots>-->
                   <!--<enabled>true</enabled>-->
                   <!--<updatePolicy>always</updatePolicy>-->
                   <!--<checksumPolicy>fail</checksumPolicy>-->
               <!--</snapshots>-->
           <!--</repository>-->
    
    
    
           <repository>
               <id>central</id>
               <name>Maven Repository Switchboard</name>
               <layout>default</layout>
               <url>http://repo1.maven.org/maven2</url>
               <snapshots>
                   <enabled>false</enabled>
               </snapshots>
           </repository>
       </repositories>
    
       <build>
           <plugins>
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-compiler-plugin</artifactId>
                  <version>2.5.1</version>
                  <configuration>
                      <source>1.8</source>
                      <target>1.8</target>
                  </configuration>
              </plugin>
    
           </plugins>
       </build>
    
       </project>
    
    

    相关文章

      网友评论

        本文标题:Swagger2+SpringMVC 集成教程

        本文链接:https://www.haomeiwen.com/subject/nqkywttx.html