AOP枚举效验

阅读 39

2022-07-12

public class EnumValueValidator implements ConstraintValidator<EnumValue, Object> {

private List<Object> values = new ArrayList<>();

@Override
public void initialize(EnumValue constraintAnnotation) {
Class<? extends Enum> clazz = constraintAnnotation.value();
String valueMethod = constraintAnnotation.valueMethod();
try {
Method method = clazz.getMethod(valueMethod);
Enum[] enums = clazz.getEnumConstants();
for (Enum item : enums) {
values.add(method.invoke(item));
}
} catch (Exception e) {
throw new ServiceException(e);
}
}

@Override
public boolean isValid(Object value, ConstraintValidatorContext context) {
return values.contains(value);
}
}

@Documented
@Constraint(validatedBy = {CheckCertificateValidator.class})
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RUNTIME)
@Repeatable(CheckCertificate.List.class)
public @interface CheckCertificate {

String message() default "参数不合法";

Class<?>[] groups() default { };

Class<? extends Payload>[] payload() default { };

@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RUNTIME)
@Documented
@interface List {
CheckCertificate[] value();
}
}


精彩评论(0)

0 0 举报