第一步:实体类

@Data
@ToString
public class User {
    private Integer id;

    @NotBlank(message = "用户名不能为空")
    @Length(min = 6, max = 32, message = "用户名的长度需要在6~32之间")
    private String name;

    @Past(message = "出生日期必须早于当前日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate birth;

    @Email(
            regexp = "^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*\\.[a-zA-Z0-9]{2,6}$",
            message = "邮件格式错误")
    private String email;

    @Size(min = 11, max = 11, message = "用户电话长度必须为11位")
    private String mobile;

    @NotNull(message = "用户等级不能为空")
    @Min(value = 1, message = "用户等级最小值为1")
    @Max(value = 6, message = "用户等级最大值为6")
    @Digits(integer = 1, fraction = 0, message = "用户等级必须为整数")
    private Integer level;

}

第二步:定义BaseController

public class BaseController {
    protected Optional<List<String>> valid(BindingResult result){
        if(result.hasErrors()){
            List<String> list = result.getAllErrors().stream()
                .map(error -> error.getDefaultMessage())
                .collect(Collectors.toList());
            return Optional.ofNullable(list);
        }
        return  Optional.empty();
    }
}

第三步:定义控制器

@RestController
@RequestMapping("/user1")
public class UserController extends BaseController{

    @PostMapping("/add")
    public void add(@Valid User user, BindingResult result) {
        Optional<List<String>> op = valid(result);
        if(op.isPresent()){
            op.get().forEach(System.out::println);
        }
    }

}

第四步:测试

在这里插入图片描述
在这里插入图片描述