Spring集成Swagger


1.1  Swagger 是一個簡單、強大的 Restful API 文檔生成管理工具.

  通過 swagger-spring 目實現了與 Sping MVC 框架的無縫集成功能,方便生成 spring restful 風格的接口文檔,在項目中集成這個工具,根據我們自己的配置信息能夠自動為我們生成一個 API 文檔展示頁,可以在瀏覽器中直接訪問查看項目的接口信息(如下圖1所示),同時swagger-ui還可以測試spring restful 風格的接口功能,可以對項目提供的每一個 API 接口進行相應的測試。Swagger 生成的 API 文檔是實時更新的,API 接口有任何改動都會在文檔中及時的表現出來。

1.2 項目環境

  Spring 提供了一個與 Swagger 的集成工具包 springfox,讓 Spring 項目能夠更好的與Swagger 融合,官網提供兩個版本可完成集成:

  

  ➢   swagger-springmvc     ➢ springfox-swagger2

  兩種版本配置不同,以最新的springfox-swagger2為例, 項目運行環境:

  ➢   JDK1.8(注:必須使用 JDK1.8 否則 swagger2 無法運行)

  ➢   Spring 4.1.7

  

  項目中所需 Maven 依賴:

    ➢   springfox-swagger2

    ➢   springfox-swagger-ui

    ➢   guava

    ➢   mapstruct-jdk8

    ➢   Jackson

          jackson-core

          jackson-databind     jackson-annotations

 

1.3配置步驟

  1.3.1  在 pom.xml 文件中添加 Swagger2 相關的依賴,配置(部分)如下

  

<!--SwaggerUI start-->
        <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>
  <!--SwaggerUI end--> 

  1.3.2   Swagger2 配置類:SwaggerConfig.java(放入到controller包中)

 1 package com.ytzl.itrip.auth.controller;
 2 
 3 import org.springframework.context.annotation.Bean;
 4 import org.springframework.context.annotation.ComponentScan;
 5 import org.springframework.context.annotation.Configuration;
 6 import org.springframework.web.servlet.config.annotation.EnableWebMvc;
 7 import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
 8 import springfox.documentation.builders.ApiInfoBuilder;
 9 import springfox.documentation.builders.PathSelectors;
10 import springfox.documentation.builders.RequestHandlerSelectors;
11 import springfox.documentation.service.ApiInfo;
12 import springfox.documentation.service.Contact;
13 import springfox.documentation.spi.DocumentationType;
14 import springfox.documentation.spring.web.plugins.Docket;
15 import springfox.documentation.swagger2.annotations.EnableSwagger2;
17
20 
21 @EnableSwagger2
22 //@EnableWebMvc
23 @ComponentScan("com.ytzl.itrip.auth.controller")
24 @Configuration //bean
25 public class SwaggerConfig extends WebMvcConfigurationSupport {
26     @Bean
27     public Docket createDocket(){
28         return new Docket(DocumentationType.SWAGGER_2)
29                 .apiInfo(getApiInfo())  //api信息
30                 .select()   //掃描哪個路徑下的哪些API
31                 .apis(RequestHandlerSelectors.any())
32                 .paths(PathSelectors.any())
33                 .build();
34     }
35     private  ApiInfo getApiInfo(){
36         return new ApiInfoBuilder()
37                 .title("標題  xxx項目xxx模塊")
38                 .contact(new Contact("name","","聯系方式"))
39                 .version("1.1")
40                 .build();
41     }
42 
43 }

    

    1> @ComponentScan(basePackages = {"cn.itrip.controller"}):設置 Swagger 掃描包:

    2> @EnableSwagger2: 使 Swagger2 生效

    3> @Configuration:自動在本類上下文加載一些環境變量信息

    4> 創建Docker對象

      * Docker apiInfo():用來創建該API的基本信息,展示在文檔的頁面中(自定義展示的信息) *

      * ApiSelectorBuilder select():設置哪些接口暴露給Swagger展示

      * ApiSelectorBuilder apis():要展示的API apis()

        ** RequestHandlerSelectors.any() 任何路徑

        ** RequestHandlerSelectors.basePackage("com.ustcinfo.*") 包位置

        * *RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class) 類位置

       * ApiSelectorBuilder paths():要展示的路徑

        * *PathSelectors.any():任何路徑都可以

      * Docker build():創建Docker對象

    5>配置 ApiInfoBuilder(界面顯示)       自定義該API工具展示信息,標題、描述、更新的地址、作者信息、版本等 *

      * ApiInfoBuilder title(String str): 設置標題

      * ApiInfoBuilder description(String str): 描述

      * ApiInfoBuilder termsOfServiceUrl(String str): 更新地址

      * ApiInfoBuilder contact(String str): 作者信息

      * ApiInfoBuilder version(String str): 版本

  1.3.3 Spring MVC 配置文件  

    1> <mvc:default-servlet-handler />:配置對靜態文件的處理方式

<!-- 使用 Swagger Restful API 文檔時,添加此注解 --> 
<mvc:default-servlet-handler /> 

    2> <context:component-scan/>:添加指定掃描(一般情況下不用另寫)

<context:component-scan base-package="cn.itrip.controller"> 
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> 
    <context:include-filter type="annotation" expression="org.springframework.context.annotation.Configuration"/> 
    <context:include-filter type="annotation" expression="org.springframework.scheduling.annotation.Scheduled"/> 
</context:component-scan>

到此准備工作已完成,可以使用了

@Controller
@RequestMapping("/api")
@Api(description = "用戶模塊")
public class ItripUserController {

    @ApiOperation(value = "用戶名的驗證",httpMethod = "GET",produces = "application/json",response = Dto.class,notes = "驗證用戶名是否存在")
    @RequestMapping(value="/ckusr",method = RequestMethod.GET,produces = "application/json")
    @ResponseBody
    public Dto ckusr(@RequestParam("name")
                       @ApiParam(value="用戶賬號",required=true) String name){
}

效果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM