1. 程式人生 > >spring boot整合swagger,自定義註解,攔截器,xss過濾,非同步呼叫,定時任務案例

spring boot整合swagger,自定義註解,攔截器,xss過濾,非同步呼叫,定時任務案例

本文介紹spring boot整合swagger,自定義註解,攔截器,xss過濾,非同步呼叫,定時任務案例

整合swagger--對於做前後端分離的專案,後端只需要提供介面訪問,swagger提供了介面呼叫測試和各種註釋的視覺化web介面。
配置swagger的掃描包路徑,api資訊等,見配置類SwaggerConfig。專案中遇到的下列註解都由swagger提供:
  @Api、@ApiOperation、@ApiModel、@ApiModelProperty
訪問http://localhost/swagger-ui.html#/就可以看到swagger文件,輸入入參,點選try it out調介面,如圖:

 

自定義註解,攔截器,過濾器--spring boot提供了跨域請求的註解@CrossOrigin(當然也可以寫一個全域性的過濾器),詳情見類UserController.class。
專案中XssFilter類定義了跨站指令碼攻擊(xss攻擊)過濾,用到了ESAPI安全處理的jar包。
註解@LogForTimeConsumer實現了對方法的執行時間的日誌輸出;
註解@LogForController實現了view層出參和入參的日誌輸出;
註解@AutoValidate實現了對@RequestBody修飾的實體類(見類RegisterRequest.class)中屬性的合法性的校驗(即屬性的正則表示式校驗);
註解@AccessLimit實現了介面防刷的功能;
註解@TokenValidate實現了使用者是否登入的校驗,必須登入的介面加此註解;
攔截器RequestTimeConsumingInterceptor實現了介面耗時統計;
攔截器RepeatSubmitInterceptor實現了重複提交的校驗。

非同步呼叫--UserController.class中註冊介面提供了非同步傳送郵件的功能。只需要在非同步呼叫的方法添加註解@Async和在啟動類加註解@EnableAsync,
啟動專案並調介面檢視執行時間可以看到非同步呼叫已經生效。

定時任務--啟動類添加註解@EnableScheduling,用@Component放到定時任務的類上,@Scheduled放到定時任務的方法上就可以實現定時任務,見類TaskTest.class。

小應用--發郵件,二維碼,圖片驗證碼,poi匯入匯出excel:
發郵件-EmailController.class;
二維碼-QrCodeController.class;
圖片驗證碼-ImgCodeController.class;
poi匯入匯出excel-ExcelController.class。

專案原始碼地址:https://github.com/zhzhair/spirng-boot-demos.git