• spring 与 swagger 2 的整合


     Spring 与 Swagger 2 的 结合

    环境 : Maven 工程 , 已具备web项目的基本配置(包扫描之类)

    1、引用swagger 的 依赖 :

          

    1. <dependency>  
    2.             <groupId>io.springfox</groupId>  
    3.             <artifactId>springfox-swagger2</artifactId>  
    4.             <version>2.4.0</version>  
    5.         </dependency>  
    6.         <dependency>  
    7.             <groupId>io.springfox</groupId>  
    8.             <artifactId>springfox-swagger-ui</artifactId>  
    9.             <version>2.4.0</version>  
    10.         </dependency>  

    2、定义自己的Docket类 : MultiDocket

        

    import java.util.List;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.service.SecurityScheme;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;

    public class MultiDocket extends Docket {
    /** 认证信息 .*/
    public void setSecurityScheme(List<? extends SecurityScheme> apiKey) {
    this.securitySchemes(apiKey);
    }
    /** swagger的基本信息*/
    public void setApiInfo(ApiInfo apiInfo) {
    this.apiInfo(apiInfo);
    }
    /** swagger 界面显示的分组*/
    public void setGroup(String group) {
    this.groupName(group);
    }
    /** swagger 界面显示的url*/
    public void setAntPath(String path) {
    this.select().paths(PathSelectors.ant(path)).build();
    }

    public void setRegexPath(String path) {
    this.select().paths(PathSelectors.regex(path)).build();
    }
      /** 构造方法*/
    public MultiDocket(DocumentationType documentationType) {
    super(documentationType);
    }
    }

    注 :
    SecurityScheme 抽象类有3个实现  : ApiKey , BasicAuth ,OAuth , 本次博客没有OAuth的环境,因此采用 ApiKey 方法


    3、自定义Swagger类 : CSwaggerConfig

    import com.globalroam.core.spring.config.MultiDocket;
    import java.util.List;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;

    @Configuration
    @EnableSwagger2
    public class CSwaggerConfig {
    public CSwaggerConfig() {
    }

    public void setMultiDockets(List<MultiDocket> multiDockets) {
    Docket docket = (Docket)multiDockets;
    }
    }
    @EnableSwagger2 :注入swagger的注解
    @Configuration:该类自动注入的注解


    4、配置文件:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">

    <!-- docket1 -->
    <bean id="AccountsDocket" class="com.globalroam.core.spring.config.MultiDocket">
    <constructor-arg value="SWAGGER_2"/>
    <property name="apiInfo" ref="apiInfo"/>
    <property name="group" value="GR-API"/>
    <property name="antPath" value="/**"/>
         <property name="securityScheme" ref="apiKeyList"/>
        </bean>

    <!-- api info -->
    <bean id="apiInfo" class="springfox.documentation.service.ApiInfo">
    <constructor-arg index="0" type="java.lang.String" value="GlobalRoam REST API with Swagger"/>
    <constructor-arg index="1" type="java.lang.String" value="GlobalRoam REST API with Swagger"/>
    <constructor-arg index="2" type="java.lang.String" value="2.0"/>
    <constructor-arg index="3" type="java.lang.String" value="GlobalRoam REST API with Swagger"/>
    <constructor-arg index="4" type="springfox.documentation.service.Contact" ref="apiContact"/>
    <constructor-arg index="5" type="java.lang.String" value="Apache License Version 2.0"/>
    <constructor-arg index="6" type="java.lang.String" value="https://www.gnum.com"/>
    </bean>

    <!-- contact : 2.4.0的版本 contact是一个类,2.2.2版本的contact是字符串,具体从哪个版本区分,需要读者自己了解 -->
    <bean id="apiContact" class="springfox.documentation.service.Contact">
    <constructor-arg index="0" value="zhenzhong"/>
    <constructor-arg index="1" value="https://www.gnum.com"/>
    <constructor-arg index="2" value="zhenzhong@globalroam.com"/>
    </bean>

      <!-- API key-->
    <util:list id="apiKeyList">
    <bean class="springfox.documentation.service.ApiKey">
    <constructor-arg name="name" value="Authorization"/>
    <constructor-arg name="keyname" value="Authorization"/>
    <constructor-arg name="passAs" value="header"/>
    </bean>
    </util:list>



    </beans>
























  • 相关阅读:
    微信小程序 添加卡券至微信卡券
    微信小程序 引入第三方字体
    小程序 生成条形码barcode.js
    Pycharm编辑器功能之自动导入模块
    Cannot open include file: 'libxml/xpath.h': No such file or directory
    怎么在32位windows系统上搭建爬虫框架scrapy?
    python2.7安装Twisted报Microsoft Visual C++9.0 required
    在windows下搭建爬虫框架,安装pywin32时出错?
    python如何通过pymongo连接到mongodb?
    python2.7.12自带pip吗?
  • 原文地址:https://www.cnblogs.com/jxwy/p/6705172.html
Copyright © 2020-2023  润新知