SpringBoot2.0實戰(6)整合hibernate-validator進行參數校驗

spring-boot-starter-web 項目中默認已經集成了 hibernate-validator

相關知識

@AssertTrue // 用於 boolean 字段,該字段只能為 true

@AssertFalse // 用於 boolean 字段,該字段只能為 false

@DecimalMax // 用於 Number 字段,只能小於或等於該值

@DecimalMin // 用於 Number 字段,只能大於或等於該值

@Digits(integer=2,fraction=20) // 檢查是否是數字,校驗整數位及小數位

@Future // 檢查該字段的日期是否是屬於將來的日期

@Length(min=2,max=6) // 用於字符串,檢查字段長度是否在指定範圍內

@Max // 用於 Number 字段,只能小於或等於該值

@Min // 用於 Number 字段,只能大於或等於該值

@NotNull // 該字段不能為空

@NotEmpty // 用於字符串,該字段不能為空字符串

@NotBlank // 用於字符串,該字段不能為空字符串,忽略空格

@Null // 該字段必須為空

@Size(min=2,max=4) // 用於字符串、數組、集合、Map等,檢查該字段的size是否在指定範圍

課程目標

本章將在 SpringBoot集成SpringBootJPA完成CURD 的基礎上,整合 hibernate-validator,對入參進行校驗。

操作步驟

添加依賴

spring-boot-starter-web 已經默認添加對 hibernate-validator 的依賴

SpringBoot2.0實戰(6)整合hibernate-validator進行參數校驗

編碼

為實體類添加校驗規則


SpringBoot2.0實戰(6)整合hibernate-validator進行參數校驗

使用校驗

在 Controller 接口的參數前面添加 @Valid 註解,入參注入時便會自動進行規則校驗,如果校驗成功,則執行方法體,如果校驗失敗,有兩種處理方法。

  • 在參數列表的最後面添加一個 BindingResult 對象獲取校驗結果,自行組織輸出內容。
  • 不使用 BindingResult 對象,則框架拋出異常,通過異常處理機制可以進行捕獲,組織輸出內容。

@RestController

SpringBoot2.0實戰(6)整合hibernate-validator進行參數校驗

源碼地址

本章源碼 :
https://github.com/caiyuanzi-song/boot.git

總結

一個安全的接口需要對每一個入參進行校驗,以保證參數合法性。

參考資料

http://www.cnblogs.com/mr-yang-localhost/p/7812038.html

https://blog.csdn.net/qq_22845447/article/details/84034289

擴展

自定義校驗

創建一個註解,其中 @Constraint 用於指向該註冊將使用的自定義校驗類

SpringBoot2.0實戰(6)整合hibernate-validator進行參數校驗

創建自定義校驗類

SpringBoot2.0實戰(6)整合hibernate-validator進行參數校驗

使用自定義校驗

SpringBoot2.0實戰(6)整合hibernate-validator進行參數校驗


分享到:


相關文章: