1、检查是否有引依赖

2、检查是否在controller上是否添加@Validated,如图:

3、 嵌套对象校验

对于嵌套对象,需要在嵌套对象的属性上添加 @Valid 注解。

4、全局异常处理器是否有添加 MethodArgumentNotValidException的处理,如图:

最后,Spring-Validate拓展

分组校验:使用接口进行定义分组校验:

public interface ValidationGroups {
    interface Create {}  // 创建时校验组
    interface Update {}  // 更新时校验组
}

在dto中使用:

@Data
public class UserDTO {
    @Null(groups = Create.class, message = "创建时ID必须为空")
    @NotNull(groups = Update.class, message = "更新时ID不能为空")
    private Long id;

    @NotBlank(groups = {Create.class, Update.class}, message = "用户名不能为空")
    private String username;
}

特别是在嵌套校验是需要使用@Valid进行触发嵌套校验。

在同一异常处理时:

校验失败时,Spring 会抛出:

MethodArgumentNotValidException@RequestBody校验失败)

ConstraintViolationException(方法参数校验失败)

我们一般在全局处理器去捕获并抛出。

 ​​异常转换​

ExceptionHandlerExceptionResolver

查找匹配的 @ExceptionHandler方法

精确异常类型优先(如 MethodArgumentNotValidExceptionRuntimeException

Spring-Validate的核心流程图:

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐