在我們應用程序的業務邏輯中,經常會碰到參數教研的情況,比如在Controller中,我們的參數是一個Entity的時候,經常要判斷這個Entity的字段是否是null之類或者是長度等。通常來講,我們用比如StringUtils或者是if等來進行教研,這樣在我們的代碼層上面就會帶來很不好的體驗,閱讀、維護的成本會大大增加,造成冗余。因此有了這個JSR 303。
Bean Validation為JavaBean提供了相應的API來給我們做參數的驗證。通過Bean Validation比如@NotNull @Pattern等方法來對我們字段的值做進一步的教研。
Bean Validation 是一個運行時框架,在驗證之后錯誤信息會直接返回。

這是核心注解 @Valid,可以看出是在RUNTIME。
接下來我們看下相關的注解

這是javax.validation包中的 主要包括上述的幾個注解
| 注解 | 描述 |
|---|---|
@AssertFalse |
被注釋的元素必須為 false |
|
同@AssertFalse |
|
被注釋的元素必須是一個數字,其值必須小於等於指定的最大值 |
|
同 |
|
被注釋的元素是數字 |
|
將來的日期 |
@Max |
被注釋的元素必須是一個數字,其值必須小於等於指定的最大值 |
@Min |
被注釋的元素必須是一個數字,其值必須大於等於指定的最小值 |
@NotNull |
不能是Null |
@Null |
元素是Null |
@Past |
被注釋的元素必須是一個過去的日期 |
@Pattern |
被注釋的元素必須符合指定的正則表達式 |
@Szie |
被注釋的元素 |
上面標紅的是樓主經常遇到的
接下來是org.hibernate.validator.constraints包中的

| 注解 | 描述 |
|---|---|
@Email |
元素必須是格式良好的電子郵箱地址 |
@Length |
字符串的大小必須在指定的范圍內,有min和max參數 |
@NotEmpty |
字符串的不能是空 |
@NotBlank |
字符串不能使空,但是與@NotEmpty不同的是尾隨的空白被忽略 |
@URL |
字符串必須是一個URL |
這是一個DTO,我們在里邊做了一些驗證

或者我們可以使用自定義的注解來操作


注意,在我們調用加了驗證注解的DTO中,我們需要在DTO的前邊加入@Valid
例如

