validator参数校验框架


org.hibernate.validator
hibernate-validator
6.0.18.Final


validation-api
javax.validation




jakarta.validation
jakarta.validation-api
2.0.2


org.apache.tomcat.embed
tomcat-embed-el
9.0.33

非工具类使用:
使用注解@Valid

工具类使用:
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import java.util.Set;

public class ValidatorUtil {
/**
* 验证器
*/
private static Validator validator;``

static {
validator = Validation.buildDefaultValidatorFactory().getValidator();
}

/**
* 验证方法
*


* 同一个pojo类,可能会被多个controller使用验证,而每个controller的验证规则有不同,
* 这是就需要分组验证,其实就是几个要分组的空接口,指定属性A属于哪个组,属性B又属于
* 哪个组,这样在controller验证时就指定我要验证哪个组
*


* @param object 被校验的对象
* @param groups 被校验的组
*/
public static void validateEntity(Object object, Class<?>... groups) throws RuntimeException{
// 用验证器执行验证,返回一个违反约束的set集合
Set<ConstraintViolation> violationSet = validator.validate(object, groups);
// 判断是否为空,空:说明验证通过,否则就验证失败
if(!violationSet.isEmpty()) {
// 获取第一个验证失败的属性
ConstraintViolation violation = violationSet.iterator().next();
// 抛出自定义异常
throw new RuntimeException(violation.getMessage());
}

}
}

posted @ 2021-03-10 13:13  Sublamb  阅读(360)  评论(0)    收藏  举报