JSR 303 - Bean Validation 基本介紹及常用註解

JSR 303 是什麼?

JSR-303 是 Java EE 6 中的一項子規範,叫做 Bean Validation,官方參考實現是hibernate Validator。

JSR 303 能做什麼?

1.JSR 303 用於對java Bean 中的字段的值進行驗證,使得基本的驗證邏輯可以從業務代碼中脫離出來。

2.是一個運行時的數據驗證框架,在驗證之後驗證的錯誤信息會被馬上返回。

都有些什麼驗證?

hibernate Validator對JSR303做了比較全面的實現,並且還額外提供了一些實現,如下:

Constraint 詳細信息 作用類型
@Null 被註釋的元素必須爲 null 引用類型
@NotNull 被註釋的元素必須不爲 null 引用類型
@AssertTrue 被註釋的元素必須爲 true boolean
@AssertFalse 被註釋的元素必須爲 false boolean
@Min(value) 被註釋的元素必須是一個數字,其值必須大於等於指定的最小值 byte、short、int、long及對應的包裝類型以及BigDecimal、BigInteger
@Max(value) 被註釋的元素必須是一個數字,其值必須小於等於指定的最大值 byte、short、int、long及對應的包裝類型以及BigDecimal、BigInteger
@DecimalMin(value) 被註釋的元素必須是一個數字,其值必須大於等於指定的最小值 byte、short、int、long及對應的包裝類型以及BigDecimal、BigInteger、String
@DecimalMax(value) 被註釋的元素必須是一個數字,其值必須小於等於指定的最大值 byte、short、int、long及對應的包裝類型以及BigDecimal、BigInteger、String
@Size(max, min) 被註釋的元素的大小必須在指定的範圍內 String、Collection、Map和數組
@Digits (integer, fraction) 被註釋的元素必須是一個數字,其值必須在可接受的範圍內 byte、short、int、long及各自的包裝類型以及BigDecimal、BigInteger、String
@Past 被註釋的元素必須是一個過去的日期 java.util.Date,java.util.Calendar
@Future 被註釋的元素必須是一個將來的日期 java.util.Date,java.util.Calendar
@Pattern(regex=) 被註釋的元素必須符合指定的正則表達式 String
@Valid 被註釋的元素需要遞歸驗證 引用對象
以下是hibernate Validator新增的
@Email 被註釋的元素必須是電子郵箱地址 String
@Length(min=下限, max=上限) 被註釋的字符串的大小必須在指定的範圍內 String
@NotEmpty 被註釋的元素的必須非空並且size大於0 String、Collection、Map和數組
@NotBlank 被註釋的元素必須不爲空且不能全部爲’ '(空字符串) String
@Range(min=最小值, max=最大值) 被註釋的元素必須在合適的範圍內 byte、short、int、long及各自的包裝類型以及BigDecimal、BigInteger、String

注意:@Valid 和 BindingResult 是一一對應的,如果有多個@Valid,那麼每個@Valid後面跟着的BindingResult就是這個@Valid的驗證結果,順序不能亂

需要的依賴

<!--jsr 303-->
<dependency>
	<groupId>javax.validation</groupId>
	<artifactId>validation-api</artifactId>
	<version>2.1.0.Final</version>
</dependency>
<!-- hibernate validator-->
<dependency>
	<groupId>org.hibernate</groupId>
	<artifactId>hibernate-validator</artifactId>
	<version>5.4.0.Final</version>
</dependency>

注意:springboot中已經自動集成了hibernate-validation 的依賴。

總結

jsr303讓代碼變得更簡潔、更清晰,使開發人員在定義數據模型時不必考慮實現框架的限制。當然 Bean Validation 不止提供了一些最基本的 constraint,還可以自定義驗證規則,在實際的開發過程中,用戶可以根據自己的需要組合或開發出更加合適的 constraint

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章