spring 與 swagger 2 的整合

 Spring 與 Swagger 2 的 結合

環境 : Maven 工程 , 已具有web項目的基本配置(包掃描之類)java

一、引用swagger 的 依賴 :web

      

  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>  

 

二、定義本身的Docket類 : MultiDocketspring

    

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 方法


三、自定義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:該類自動注入的註解


四、配置文件:
<?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>
相關文章
相關標籤/搜索