最近在寫接口的時候經常需要判斷傳過來的參數是不是爲手機號。之前都是在每一個接口寫一個判斷。最近寫了一個註解直接可以判斷傳入的參數是不是手機號。
自定義註解
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = {MobileValidate.class})
public @interface isMobile {
String message() default "手機格式不正確";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
判斷手機號的類
public class MobileValidate implements ConstraintValidator<isMobile, String> {
private static Pattern pattern = Pattern.compile("^[1][3,4,6,5,7,8,9][0-9]{9}$");
@Override
public void initialize(isMobile constraintAnnotation) {
}
@Override
public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
Matcher matcher = pattern.matcher(s);
return matcher.matches();
}
}
使用方法 CompanyVO
類的一個屬性上加上@isMobile
@isMobile
private String linkPhone;
這樣調用接口的時候就會自動判斷companyVO的屬性linkPhone是不是爲手機號了。
@PostMapping("saveCompany")
public Response saveCompanyHandler(@Validated CompanyVO companyVO) {
companyService.saveCompanyHandler(companyVO);
return Response.success();
}