springboot使用@Validated不起作用
·
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方法
精确异常类型优先(如 MethodArgumentNotValidException> RuntimeException)
Spring-Validate的核心流程图:

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


所有评论(0)