為什么使用Swagger2
1.由於接口眾多,並且細節復雜(需要考慮不同的HTTP請求類型、HTTP頭部信息、HTTP請求內容等),高質量地創建這份文檔本身就是件非常吃力的事,下游的抱怨聲不絕於耳。
2.隨着時間推移,不斷修改接口實現的時候都必須同步修改接口文檔,而文檔與代碼又處於兩個不同的媒介,除非有嚴格的管理機制,不然很容易導致不一致現象。
Swagger2相關依賴依賴
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId> <version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version>
</dependency>
swagger基本配置
@Configuration注解代表上圖SwaggerConfig類為配置類,啟動boot后自動加載到容器中。
@EnableSwagger2則是用來啟動Swagger支持,表示這是一個Spring Swagger的配置文件。
定義了一個Bean方法CustomDocket,Spring中名字並不重要,重要的是它返回一個Docket類,DocumentationType.SWAGGER_2作為Docket構造方法的參數,指定了所用的swagger版本2.0,而之后的apiInfo則是調用接下來的apiInfo函數,來創建Docket的信息。apiInfo函數采用ApiInfoBuilder類的build方法來創建ApiInfo類,build方法中所加入的參數將顯示在swagger生成的Api接口文檔中。

配置swagger-ui依賴中的Swagger2-Api文檔頁面的訪問權限,重寫WebMvcConfigurer類中的addResourceHandlers方法,允許指定資源訪問,配置完成后即可訪問生成的Api文檔
swagger界面

登錄之后界面如下:

swagger注解的使用
@Api:一般用於Controller中,用於接口分組。(如:@Api(value = "用戶接口", description = "用戶接口", tags = {"1.1.0"})
@ApiOperation:接口說明,用於controller控制層方法上。(如: @ApiOperation(value = "用戶查詢", notes = "根據ID查詢用戶信息"))
@ApiParam:接口說明,用於controller控制層方法參數上。(如: @ApiParam(name=“userId”,value = “用戶ID", notes = "根據ID查詢用戶信息"))
@ApiModelProperty:實體參數說明,這里我通過Mybatis-generate逆向工程生成了swagger注解
效果演示:

測試結果成功了,返回了預期想要的參數,以上為spring boot結合swagger插件生成的API接口文檔。