diff --git a/back/src/main/java/com/utils/ValidatorUtils.java b/back/src/main/java/com/utils/ValidatorUtils.java index 06ed26c9..c9789ccd 100644 --- a/back/src/main/java/com/utils/ValidatorUtils.java +++ b/back/src/main/java/com/utils/ValidatorUtils.java @@ -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> constraintViolations = validator.validate(object, groups); + + // 检查约束违反集合是否为空,若不为空则表示存在校验不通过的情况。 if (!constraintViolations.isEmpty()) { - ConstraintViolation constraint = (ConstraintViolation)constraintViolations.iterator().next(); + // 获取集合中的第一个违反约束的信息。 + // 这里仅取第一个违反约束的信息作为异常信息抛出,可能会忽略其他违反约束的情况。 + ConstraintViolation constraint = (ConstraintViolation)constraintViolations.iterator().next(); + // 抛出EIException异常,将违反约束的详细信息作为异常消息。 throw new EIException(constraint.getMessage()); } } - - }