Foo代码:

@Data
public class Foo {
@NotBlank(message="name 不能为空")
private String name;

@Min(18)
private Integer age;

@Pattern(regexp = "^1(3|4|5|7|8)\\d{9}$",message = "手机号码格式错误")
@NotBlank(message = "手机号码不能为空")
private String phone;

@Email(message = "邮箱格式错误")
private String email;
}

Controller代码:

@RestController
@RequestMapping("")
@Slf4j
public class LoginController {
@Autowired
private CacheServiceImpl cacheService;
@RequestMapping("/login")
public String login(@Valid Foo foo, BindingResult bindingResult){
if(bindingResult.hasErrors()){
List<FieldError> fieldErrors = bindingResult.getFieldErrors();
if(bindingResult.hasErrors()){
for (FieldError fieldError :
fieldErrors) {
System.out.println(fieldError.getDefaultMessage());
}
}

};
return "success";
}
}

@Valid表示要对这个入参校验,会自动绑定到​​BindingResult​​​上。也可以多个。
bindingResult.hasErrors() 判断是否有错误信息。

注: 如果字段为null或者"" 是不会验证格式的,如email
http://localhost:8080/login 没email参数不报错
http://localhost:8080/login?email= email值设置为空字符串也不报错