1 @Valid

请求体对象的校验

@PostMapping("nestValid")
public UserBean nestValid(@Validated @RequestBody UserBean userBean){
    System.out.println(userBean);
    return userBean;
}

嵌套对象的校验

@Data
public class UserBean {

    @NotEmpty(groups = {CreationGroup.class})
    private String username;

    @Min(value = 18)
    private Integer age;

    private String email;

    @Min(value  = 1 ,groups = {UpdateGroup.class})
    private Long id;

		//嵌套验证必须要加上@Valid
    @Valid
    @NotNull
    private AddressBean address;
}

2 @Validated

分组校验

// 定义校验组
public interface AddGroup {}
public interface UpdateGroup {}

// 使用校验组
public class User {
    @NotNull(groups = UpdateGroup.class)
    private Long id;

    @NotBlank(groups = {AddGroup.class, UpdateGroup.class})
    private String name;
}
// 在controller中进行分组校验
@RestController
@RequestMapping("/users")
public class UserController {
    @PostMapping
    public String addUser(@Validated(AddGroup.class) @RequestBody User user) {
        // 处理添加用户逻辑
        return "User added successfully";
    }

    @PutMapping
    public String updateUser(@Validated(UpdateGroup.class) @RequestBody User user) {
        // 处理更新用户逻辑
        return "User updated successfully";
    }
}
// @ControllerAdvice和@ExceptionHandler定义全局异常处理
@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(MethodArgumentNotValidException.class)
    public ResponseEntity<String> handleValidationExceptions(MethodArgumentNotValidException ex) {
        // 处理校验异常
        return new ResponseEntity<>("Validation failed: " + ex.getMessage(), HttpStatus.BAD_REQUEST);
    }
}