在我们应用程序的业务逻辑中,经常会碰到参数教研的情况,比如在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
例如