在我们应用程序的业务逻辑中,经常会碰到参数教研的情况,比如在Controller中,我们的参数是一个Entity的时候,经常要判断这个Entity的字段是否是null之类或者是长度等。通常来讲,我们用比如StringUtils或者是if等来进行教研,这样在我们的代码层上面就会带来很不好的体验,阅读、维护的成本会大大增加,造成冗余。因此有了这个JSR 303。
Bean Validation为JavaBean提供了相应的API来给我们做参数的验证。通过Bean Validation比如@NotNull @Pattern等方法来对我们字段的值做进一步的教研。
Bean Validation 是一个运行时框架,在验证之后错误信息会直接返回。
这是核心注解 @Valid,可以看出是在RUNTIME。
这是javax.validation包中的 主要包括上述的几个注解
注解 | 描述 |
---|---|
@AssertFalse | 被注释的元素必须为 false |
@AssertTrue | 同@AssertFalse |
@DecimalMax | 被注释的元素必须是一个数字,其值必须小于等于指定的最大值 |
@DecimalMin | 同DecimalMax |
@Digits | 被注释的元素是数字 |
@Future | 将来的日期 |
@Max | 被注释的元素必须是一个数字,其值必须小于等于指定的最大值 |
@Min | 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 |
@NotNull | 不能是Null |
@Null | 元素是Null |
@Past | 被注释的元素必须是一个过去的日期 |
@Pattern | 被注释的元素必须符合指定的正则表达式 |
@Szie | 被注释的元素 |
上面标红的是楼主经常遇到的
接下来是org.hibernate.validator.constraints包中的
注解 | 描述 |
---|---|
元素必须是格式良好的电子邮箱地址 | |
@Length | 字符串的大小必须在指定的范围内,有min和max参数 |
@NotEmpty | 字符串的不能是空 |
@NotBlank | 字符串不能使空,但是与@NotEmpty不同的是尾随的空白被忽略 |
@URL | 字符串必须是一个URL |
这是一个DTO,我们在里边做了一些验证
或者我们可以使用自定义的注解来操作
注意,在我们调用加了验证注解的DTO中,我们需要在DTO的前边加入@Valid
例如