refactor(core): 优化 JSR 303 校验方法

This commit is contained in:
2024-07-03 23:23:06 +08:00
parent 6809600858
commit b0f5506424
2 changed files with 20 additions and 22 deletions

View File

@@ -16,14 +16,9 @@
package top.continew.starter.core.util.validate; package top.continew.starter.core.util.validate;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.extra.spring.SpringUtil;
import jakarta.validation.ConstraintViolation;
import top.continew.starter.core.exception.BadRequestException; import top.continew.starter.core.exception.BadRequestException;
import java.util.Set;
import java.util.function.BooleanSupplier; import java.util.function.BooleanSupplier;
/** /**
@@ -178,21 +173,4 @@ public class ValidationUtils extends Validator {
public static void throwIf(BooleanSupplier conditionSupplier, String template, Object... params) { public static void throwIf(BooleanSupplier conditionSupplier, String template, Object... params) {
throwIf(conditionSupplier, CharSequenceUtil.format(template, params), EXCEPTION_TYPE); throwIf(conditionSupplier, CharSequenceUtil.format(template, params), EXCEPTION_TYPE);
} }
/**
* JSR 303 校验
*
* @param obj 被校验对象
* @param groups 分组
*/
public static void validate(Object obj, Class<?>... groups) {
jakarta.validation.Validator validator = SpringUtil.getBean(jakarta.validation.Validator.class);
Set<ConstraintViolation<Object>> violations = validator.validate(obj, groups);
if (CollUtil.isEmpty(violations)) {
return;
}
throw ReflectUtil.newInstance(EXCEPTION_TYPE, violations.stream()
.map(ConstraintViolation::getMessage)
.findFirst());
}
} }

View File

@@ -19,9 +19,13 @@ package top.continew.starter.core.util.validate;
import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.ReflectUtil;
import cn.hutool.extra.spring.SpringUtil;
import jakarta.validation.ConstraintViolation;
import jakarta.validation.ConstraintViolationException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.util.Set;
import java.util.function.BooleanSupplier; import java.util.function.BooleanSupplier;
/** /**
@@ -32,6 +36,8 @@ import java.util.function.BooleanSupplier;
*/ */
public class Validator { public class Validator {
private static final Logger log = LoggerFactory.getLogger(Validator.class); private static final Logger log = LoggerFactory.getLogger(Validator.class);
private static final jakarta.validation.Validator VALIDATOR = SpringUtil
.getBean(jakarta.validation.Validator.class);
protected Validator() { protected Validator() {
} }
@@ -195,4 +201,18 @@ public class Validator {
throw ReflectUtil.newInstance(exceptionType, message); throw ReflectUtil.newInstance(exceptionType, message);
} }
} }
/**
* JSR 303 校验
*
* @param obj 被校验对象
* @param groups 分组
* @since 2.3.0
*/
public static void validate(Object obj, Class<?>... groups) {
Set<ConstraintViolation<Object>> violations = VALIDATOR.validate(obj, groups);
if (!violations.isEmpty()) {
throw new ConstraintViolationException(violations);
}
}
} }