既然都自定义了,当然是别人提供的默认校验方法不满足需求了。
我们都知道,在接口访问时,可以设置参数校验,来避免请求参数非法的情况,一般除了前端需要校验,后端也需要。而对于参数校验,我们通常使用Spring validation包下的注解,很容易就可以达到常见要求。
但是,当Spring validation 包下的注解无法满足需求时,就需要自定义参数校验规则了。
具体怎么做呢?自定义:注解+校验类
1. 定义校验类实现ConstraintValidator接口
其中Annotation表示自定义的校验注解,T表示校验对象的类型;
public class IsShadowValidateServiceImpl implements ConstraintValidator2. 自定义校验注解{ @Override public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) { return Objects.equals(s, "shadow"); } }
包含错误信息,分组(用于分组校验),playload(目前不知道什么用,但是接口中没有这个属性会报错),为了使用时方便,每个属性都设置default默认值;
@Target({ PARAMETER, FIELD })
@Retention(RUNTIME)
@Constraint(validatedBy = IsShadowValidateServiceImpl.class)
public @interface IsShadow {
String message() default "you are not shadow!";
Class>[] groups() default {};
Class extends Payload>[] payload() default {};
}
最后,就可以像使用spring validation提供的校验注解一样,使用我们自定义的校验注解了~



