spring boot整合Hibernate Validator分组校验
待校验的类
public class User {
@NotBlank(message = "用户名不能为空", groups = {Login.class})
private String username;
@NotBlank(message = "密码不能为空", groups = {Login.class})
private String password;
@NotBlank(message = "email不能为空", groups = {Register.class})
private String email;
@Min(value = 18, message = "年龄必须大于18岁", groups = {Register.class})
private int age;
}
分组接口
public interface Login {}
public interface Register {}
public class UserController{
@PostMapping("/login")
public String login(@Validated(Login.class) @RequestBody User user) {
//...
}
@PostMapping("/register")
public String register(@Validated(Register.class) @RequestBody User user) {
//...
}
}
上面的例子中,User类分别使用了Login和Register两个分组。在login方法中,只校验User对象的username和password字段,其它字段不会被校验;在register方法中,只校验User对象的email和age字段,其它字段不会被校验。
注意,分组校验需要使用@Validated注解,并且需要指定分组。如果不指定分组,则会默认校验所有字段。同时,使用分组校验需要在User类中定义分组标识,例如Login和Register接口。