Hibernate Validator 使用及自定义校验器注解
Hibernate Validator 是 Hibernate 提供的一种对 Bean Validation 规范的实现,用于对 Java Bean 中的字段的值进行验证。它提供了一系列的注解来实现参数校验。
Hibernate Validator 的常用注解:
1. @Null:必须为空
2. @NotNull:不能为空
3. @AssertTrue:必须为 true
4. @AssertFalse:必须为 false
5. @Min:必须为数字,其值大于或等于指定的最小值
6. @Max:必须为数字,其值小于或等于指定的最大值
7. @DecimalMin:必须为数字,其值大于或等于指定的最小值
8. @DecimalMax:必须为数字,其值小于或等于指定的最大值
9. @Size:集合的长度
10. @Digits:必须为数字,其值必须再可接受的范围内
11. @Past:必须是过去的日期
12. @Future:必须是将来的日期
13. @Pattern:必须符合正则表达式
14. @Email:必须是邮箱格式
15. @Length:长度范围
16. @NotEmpty:不能为 null,长度大于 0
17. @NotBlank:不能为 null,字符串长度大于 0(限字符串)
18. @Range:元素的大小范围
在使用 Hibernate Validator 时,需要先进行为 null 判断,否则其他注解有的不会生效。例如,username 加了 @Length 而不加 @NotNull 注解,当没有输入 username,那么 @Length 判断将不会生效。判断为 null 的有 @NotNull、@NotEmpty 以及 @NotBlank。
创建测试类时,需要引入 Hibernate Validator 的依赖:
```
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.15.Final</version>
</dependency>
```
在 Controller 中使用 @Valid 注解来对参数进行校验。如果对参数校验发现有误,会将错误注入到 BindingResult 中。
```
@Valid
public void test(@Valid User user, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
List<ObjectError> errors = bindingResult.getAllErrors();
for (ObjectError error : errors) {
System.out.println(error.getDefaultMessage());
}
}
}
```
自定义校验器注解是 Hibernate Validator 提供的一种机制,允许开发人员根据自己的需求创建自定义的校验器注解。自定义校验器注解可以继承自 Hibernate Validator 的 ConstraintValidator 接口,并实现 validate 方法来实现自己的校验逻辑。
Hibernate Validator 是一个功能强大且灵活的参数校验框架,提供了一种简单而且高效的方式来实现参数校验,并且可以根据自己的需求创建自定义的校验器注解。