Springboot自定义参数校验规则
SpringBoot 自定义参数校验很简单分成两步:
- 写一个注解
- 写一个实现类
下面的是自定义手机号码校验的示例
1、写一个注解:
// 可以用在哪些东西上面?这里可以使用在方法参数、方法、字段上
@Target({ElementType.PARAMETER, ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
// 由哪个类来完成校验?
// 这里指定PhoneValidated.class 这个类完成校验
// 使用时把这个类换成自己的实现类即可
@Constraint(validatedBy = PhoneValidated.class)
@Documented
public @interface Phone {
// 默认的错误提示
String message() default "电话号码错误!";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
2、写一个实现类
/**
* 这个类必须实现ConstraintValidator,并在里面指定泛型,固定写法<注解名,Object>,
* 这里的Phone就是上面定义的Phone注解,使用时换上自己对应的注解
* */
public class PhoneValidated implements ConstraintValidator<Phone,Object> {
// 实现方法--校验规则写这里面就可以
@Override
public boolean isValid(Object value, ConstraintValidatorContext context) {
String phone = value.toString();
String reg = "^(1[3-9][0-9])\\d{8}$";
return phone.matches(reg);
}
}
好了,下面就可以使用了,
// 用在字段
@Phone
private String phone;
// 用在方法参数
@GetMapping("getByPhone")
public void getByPhone(@Phone String phone){
// 逻辑......
}
很简单吧?