再使用过程中 spring Boot 自带的注解无法满足需求,那就需要自定义实现注解
例如:校验手机号
校验手机号是否合法,其实这个完全可以通过正则表达式来做
1.创建一个注解
@Target({FIELD, PARAMETER})
@Retention(RUNTIME)
@Constraint(validatedBy = PhoneValidator.class)
@Documented
public @interface Phone {
String message() default "phone invalid";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
2.实现 ConstraintValidator
接口,并重写isValid()
方法
public class PhoneValidator implements ConstraintValidator<Phone, String> {
@Override
public void initialize(Phone constraintAnnotation) {
}
@Override
public boolean isValid(String phone, ConstraintValidatorContext context) {
if (phone == null) return false;
return DataConstraintsConst.phonePattern.matcher(phone).matches();
}
}
3.使用注解
@Phone(message = "手机号格式不正确")
private String phone;