编写自定义注解MyValid和自定义注解校验MyValidator
@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = {MyValidator.class})
public @interface MyValid{
String message() default "参数格式错误!";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
@Slf4j
public class MyValidator implements ConstraintValidator<MyValid, Map<String, String>> {
/**
*
* @param value 需要校验字段参数类型
* @param constraintValidatorContext
* @return 校验成功返回TRUE,失败则对message重新赋值并返回false
*/
@Override
public boolean isValid(Map<String, String> value, ConstraintValidatorContext constraintValidatorContext) {
if (null == value){
//禁用默认message值,不禁用会在原有默认的message的基础上进行拼接
constraintValidatorContext.disableDefaultConstraintViolation();
constraintValidatorContext.buildConstraintViolationWithTemplate("my word").addConstraintViolation();
return false;
}
return true;
}
}
ConstraintValidator<MyValid, Map<String, String>>,第一个参数MyValid为自定义注解,第二个参数为需校验字段类型
public class MyClass{
@MyValid
private Map<String, String> field;
}