💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
下面自定义一个校验手机号码的约束注解。 **1. 自定义约束注解** ```java @Documented @Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE}) //指定校验器 @Constraint(validatedBy = {MobileValidator.class}) @Retention(RUNTIME) //可以让同一个注解在同一个地方重复使用多次 @Repeatable(Mobile.List.class) public @interface Mobile { String message() default "手机号码不正确"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; /** * 手机号码的正则表达式 */ String regexp() default "^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\\d{8}$"; @Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE}) @Retention(RUNTIME) @Documented @interface List { Mobile[] value(); } } ``` **2. 实现校验器** ```java public class MobileValidator implements ConstraintValidator<Mobile, String> { private Pattern pattern; /** * 可以在这里做一些初始化 */ @Override public void initialize(Mobile mobile) { pattern = Pattern.compile(mobile.regexp()); } /** * 在这里校验是否通过 * * @return true-通过,false-不通过 */ @Override public boolean isValid(String value, ConstraintValidatorContext context) { if (value == null) { return true; } return pattern.matcher(value).matches(); } } ``` **3. 标记自定义约束注解** ```java @Data public class Student { @Mobile(message = "手机号不正确") private String phone; } ```