- 导包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
- 通过注释校验
LoginController类
使用校验过后的实体类
public Result<Boolean> dologin(@Valid LoginEntity loginEntity){
LoginEntity类
在需要校验的属性上添加注释来校验
@NotNull //不能为空
@Length(min=32) //密码最小长度是32
private String password;
@NotNull
@IsMobile //自定义的校验,专门用来验证手机是否符合格式
private String mobile;
- 自定以校验器
新建validator包,包下新建类IsMobile,IsMobileValidator来实现自定义的校验@IsMobile
IsMobile @interface
@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 {};//一般不改
Class<? extends Payload>[] payload() default {};//一般不改
}
IsMobileValidator类
具体实现@IsMobile的格式校验
//这是一个验证器
public class IsMobileValidator implements ConstraintValidator<IsMobile, String> {
private boolean required = false;
//初始化方法
public void initialize(IsMobile constraintAnnotation){
required = constraintAnnotation.required();//看是否可以为空
}
public boolean isValid(String value, ConstraintValidatorContext context){
if(required){//如果必须不为空
return ValidatorUtil.isMobile(value);//调用ValidatorUtil验证方法
}else {//不为空不是必须的
if(StringUtils.isEmpty(value)){
return true;//为空返回true,不校验
}else{
return ValidatorUtil.isMobile(value);//不为空,则校验
}
}
}
}