Validator validate时会逐个校验bean 中加了验证注解的字段,然后返回一个错误列表。
现实开发中,这样的验证未免有些浪费,当有一个验证不ok,就应该直接返回,既节省了时间,
也满足了验证需求。
Validator 事实上是支持快速验证失败的。只需要在构建Validator,开启failFast。Validator验证
遇到一个错误,就不在继续验证剩余的字段了。
```
private static final ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
public static <T> void validate(T t) {
Validator validator = factory.unwrap(HibernateValidatorFactory.class).usingContext()
.failFast(true)
.getValidator();
Set<ConstraintViolation<T>> constraintViolations = validator.validate(t);
if (constraintViolations.isEmpty()) {
return;
}
ConstraintViolation<T> violation = Lists.newArrayList(constraintViolations).get(0);
String error = violation.getMessage();
Path.Node node = violation.getPropertyPath().iterator().next();
String field = node.getName();
throw new BusinessException(ProtocolErrorCode.REQUEST_PARAMS_INVALID, field + error);
}
```