|
|
|
@ -1,7 +1,5 @@
|
|
|
|
|
|
|
|
|
|
package com.utils;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.Set;
|
|
|
|
|
|
|
|
|
|
import javax.validation.ConstraintViolation;
|
|
|
|
@ -12,28 +10,41 @@ import com.entity.EIException;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* hibernate-validator校验工具类
|
|
|
|
|
* 该类借助Hibernate Validator框架,为对象提供校验功能。
|
|
|
|
|
* 当对象不符合预先定义的约束条件时,会抛出EIException异常。
|
|
|
|
|
*/
|
|
|
|
|
public class ValidatorUtils {
|
|
|
|
|
// 静态的Validator对象,用于执行校验操作。
|
|
|
|
|
// 由于Validator是线程安全的,使用静态变量可以在整个应用程序中共享同一个实例,提高性能。
|
|
|
|
|
private static Validator validator;
|
|
|
|
|
|
|
|
|
|
// 静态代码块,在类加载时执行,确保Validator对象只被初始化一次。
|
|
|
|
|
// 通过Validation类构建默认的验证工厂,然后从工厂中获取Validator实例。
|
|
|
|
|
static {
|
|
|
|
|
validator = Validation.buildDefaultValidatorFactory().getValidator();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 校验对象
|
|
|
|
|
* @param object 待校验对象
|
|
|
|
|
* @param groups 待校验的组
|
|
|
|
|
* @throws EIException 校验不通过,则报EIException异常
|
|
|
|
|
* 校验对象的方法
|
|
|
|
|
*
|
|
|
|
|
* @param object 待校验的对象,该对象需要使用Hibernate Validator的注解来定义约束条件。
|
|
|
|
|
* @param groups 待校验的组,可用于指定在不同场景下应用不同的约束条件。
|
|
|
|
|
* @throws EIException 若校验不通过,即对象存在违反约束的情况,会抛出EIException异常。
|
|
|
|
|
* 异常信息为第一个违反约束的详细描述。
|
|
|
|
|
*/
|
|
|
|
|
public static void validateEntity(Object object, Class<?>... groups)
|
|
|
|
|
throws EIException {
|
|
|
|
|
// 调用Validator的validate方法对对象进行校验,根据指定的组应用相应的约束条件。
|
|
|
|
|
// 该方法会返回一个包含所有违反约束信息的Set集合。
|
|
|
|
|
Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups);
|
|
|
|
|
|
|
|
|
|
// 检查约束违反集合是否为空,若不为空则表示存在校验不通过的情况。
|
|
|
|
|
if (!constraintViolations.isEmpty()) {
|
|
|
|
|
ConstraintViolation<Object> constraint = (ConstraintViolation<Object>)constraintViolations.iterator().next();
|
|
|
|
|
// 获取集合中的第一个违反约束的信息。
|
|
|
|
|
// 这里仅取第一个违反约束的信息作为异常信息抛出,可能会忽略其他违反约束的情况。
|
|
|
|
|
ConstraintViolation<Object> constraint = (ConstraintViolation<Object>)constraintViolations.iterator().next();
|
|
|
|
|
// 抛出EIException异常,将违反约束的详细信息作为异常消息。
|
|
|
|
|
throw new EIException(constraint.getMessage());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|