参数校验采用的是SpringBoot提供的一套验证框架。
1 需要导入的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
2 对于这个框架的一些介绍
如果需要采用这个框架来进行参数的校验,只需要在要校验的参数前面加上@Valid
而对里面具体参数的限制,则采用注解的形式。
public class LoginVo {
@NotNull
@IsMobile
private long mobile;
@Length(min=32)
@NotNull
private String password;
}
@NotNull,@Length 这些都是框架提供的,意思也很明确。当然我们也可以自己定义对参数进行内容或者参数的限制。
3 自定义注解对参数进行限制
关于对注解的解释与使用:https://www.cnblogs.com/HDK2016/p/6914521.html
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(
validatedBy = {IsMobileValidator.class}
)
public @interface IsMobile {
boolean required() default true;
String message() default "{请输入正确的手机格式}";
Class<?>[] groups() default {};
}
这个与Java中的注解不同的地方在于添加了一个@Constraint()这个标签是指要对注解进行验证的类。
public class IsMobileValidator implements ConstraintValidator<IsMobile,String>{
private boolean required = false;
@Override
public void initialize(IsMobile isMobile) {
required = isMobile.required();
}
@Override
public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
if(required){
return ValidatorUtil.isMobile(s);
}else{
if(StringUtils.isEmpty(s)){
return true;
}else{
return ValidatorUtil.isMobile(s);
}
}
}
}
ConstraintValidator<> 这个接口包含两个方法:
1 initialize() 在验证之前的初始化
2 boolean isValid() 这里面进行的具体的验证的逻辑。
这样便自己定义注解并且使用注解。