# (三)Java Bean Validation 最佳实践
标签(空格分隔): JSR-303
这一节学习自定义校验注解
自定义校验规则
虽然jSR303和Hibernate Validtor 已经提供了很多校验注解,但是当面对复杂参数校验时,还是不能满足我们的要求,这时候我们就需要 自定义校验注解。
用到的时候再说吧
分组校验
- 定义空接口,区别不同的规则组
- 在校验规则上指明所属的校验组,可以属于多套校验规则组
- 使用的时候指明用那一套校验规则
public interface AddUser {
}
public interface UpdateUser {
}
@NotEmpty(message = "用户名不能为空",groups={AddUser.class})
private String username;
@Min(value = 18,message = "不能小于18",groups= {AddUser.class,UpdateUser.class})
private Integer age;
@RestController
public class HelloController {
/**
* 添加一个用户
* @param user
* @return
*/
@PostMapping("/addUser")
public User addUser(@Validated({AddUser.class}) User user,BindingResult bindingResult) {
if(bindingResult.hasErrors()) {
System.out.println(bindingResult.getFieldError().getDefaultMessage());
}
System.out.println(user.getUsername());
System.out.println(user.getAge());
return user;
}
}
此处@Validated(AddUser.class) 表示使用AddUser这套校验规则,若使用@Valid 则表示使用默认校验规则