每次咱們在搭建一個開源項目的首要任務包括:項目的統一異常處理、統一結果封裝以及作項目的數據校驗,在先後端分離的狀況下,不只前端須要作數據校驗,後端更加須要,前端主要使用一些相似與jQuery Validate等js/css插件實現經過數據校驗,好比:bootstrap-validator,然後端主要使用的是Hibernate Validator檢驗框架,經過數據校驗,咱們能避免用戶藉助一些HTTP請求工具直接向後端發送一些不合法的數據請求,本文將入如何在Spring/Spring Boot下實現後端的數據校驗。css
註解 | 用途 |
---|---|
Valid | 遞歸的對關聯的對象進行校驗 |
AssertFalse | 用於boolean字段,該字段的值只能爲false |
AssertTrue | 用於boolean字段,該字段只能爲true |
DecimalMax(value) | 被註釋的元素必須是一個數字,只能大於或等於該值 |
DecimalMin(value) | 被註釋的元素必須是一個數字,只能小於或等於該值 |
Digits(integer,fraction) | 檢查是不是一種數字的(整數,小數)的位數 |
Future | 檢查該字段的日期是不是屬於未來的日期 |
FutureOrPresent | 判斷日期是不是未來或如今日期 |
Past | 檢查該字段的日期是在過去 |
PastOrPresent | 判斷日期是不是過去或如今日期 |
Max(value) | 該字段的值只能小於或等於該值 |
Min(value) | 該字段的值只能大於或等於該值 |
Negative | 判斷負數 |
NegativeOrZero | 判斷負數或0 |
Positive | 判斷正數 |
PositiveOrZero | 判斷正數或0 |
NotNull | 不能爲null |
Null | 必須爲 null |
Pattern(value) | 被註釋的元素必須符合指定的正則表達式 |
Size(max, min) | 檢查該字段的size是否在min和max之間,能夠是字符串、數組、集合、Map等 |
Length(max, min) | 判斷字符串長度 |
CreditCardNumber | 被註釋的字符串必須經過Luhn校驗算法,銀行卡,信用卡等號碼通常都用Luhn計算合法性 |
被註釋的元素必須是電子郵箱地址 | |
Length(min=, max=) | 被註釋的字符串的大小必須在指定的範圍內 |
NotBlank | 只能用於字符串不爲null,而且字符串trim()之後length要大於0 |
NotEmpty | 集合對象的元素不爲0,即集合不爲空,也能夠用於字符串不爲null |
Range(min=, max=) | 被註釋的元素必須在合適的範圍內 |
SafeHtml | classpath中要有jsoup包 |
ScriptAssert | 要有Java Scripting API 即JSR 223("Scripting for the JavaTMPlatform")的實現 |
URL(protocol=,host=,port=,regexp=,flags=) | 被註釋的字符串必須是一個有效的url |
<dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>6.1.0.Final</version> </dependency> <!--統一EL--> <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>6.1.0.Final</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>