自定义注解
通过实现ConstraintValidator可以自定义参数注解。
StatusRangeValue.java
@Target( {
METHOD,
FIELD,
ANNOTATION_TYPE,
CONSTRUCTOR,
PARAMETER
})
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = {StatusRangeValueValidator.class})
public @interface StatusRangeValue {
String range() default "";
String message() default "格式不对,默认只能为指定的值";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
StatusRangeValueValidator.java
public class StatusRangeValueValidator implements ConstraintValidator<StatusRangeValue,Integer> {
private List<Integer> ranges;
@Override
public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
return ranges.contains(value);
}
@Override
public void initialize(Mobile constraintAnnotation) {
String range = constraintAnnotation.range();
List<String> collect = Arrays.stream(range.split(",")).collect(Collectors.toList());
ranges = collect.stream().map(Integer::parseInt).collect(Collectors.toList());
}
User.java
@Data
public class User {
@NotBlank
private String userName;
@StatusRangeValue
private String mobile;
}