前言
之前写了一个博客是关于使用SpringBoot使用validation-api实现参数校验,当时使用的注解都是validation-api自带的注解只能完成对空值、长度等简单的校验,在我们日常的使用当中会遇到对参数是否在枚举值类的校验,针对这种情况我们怎么来实现呢?
SpringBoot使用validation-api实现参数校验可参考我的博客:SpringBoot使用validation-api实现参数校验
正文
SpringBoot使用validation-api实现对枚举类参数校验
ValidationApi框架就是用来解决参数校验中代码冗余问题,ValidationApi框架提供一些注解用来帮助我们对请求参数进行校验。
Maven依赖
javax.validation
validation-api
2.0.1.Final
org.apache.commons
commons-lang3
3.3.2
org.projectlombok
lombok
1.18.2
true
com.github.xiaoymin
knife4j-spring-boot-starter
2.0.4
EnumValidate:用于对枚举校验的接口
/**
* 用于实现枚举类的校验
*/
public interface EnumValidate {
/**
* 校验枚举值是否存在
*/
boolean existValidate(T value);
}
ActionTypeEnumValid:用于对枚举类校验的自定义注解
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {ActionTypeEnumValidator.class})
@Documented
public @interface ActionTypeEnumValid {
String message() default "";
Class
ActionTypeEnumValidator:枚举校验器
/**
* 用于校验ActionTypeEnumValidator
*/
public class ActionTypeEnumValidator implements ConstraintValidator {
private Class extends Enum> enumClass;
@Override
public void initialize(ActionTypeEnumValid actionTypeEnumValid) {
enumClass = actionTypeEnumValid.enumClass();
}<