美文网首页
Spring @Valid和@Validate的简单理解

Spring @Valid和@Validate的简单理解

作者: freshforest | 来源:发表于2023-07-02 18:19 被阅读0次

    包区别

    @Valid是javax包定义的一个注解,hibernate曾使用这个注解作为校验注解,目前在spring中也可以使用

    @Validate是spring自定义的一个注解,支持分组校验,位于spring框架包内

    标注位置区别

    @Valid可以标注于方法,成员,构造,方法参数,类型声明

    @Validate可以标注于类、接口、枚举、方法、方法参数

    用法区别

    两个注解抛出的异常是一样的 MethodArgumentNotValidException,可以填充BindingResult对象,通过全局异常捕捉MethodArgumentNotValidException后,可以从异常中取出BindingResult,调用bindingResult.getBindingResult().getTarget()可以获取spring校验的对象。

    注意事项

    有些项目的接口出入参打印是用AOP切controller方法做的,由于springMVC的接口入参检查在AOP之前,所以最好打印一下,不然报错了也不知道请求参数是什么,排查问题就麻烦了。

    @Vlidate标注的对象是不支持嵌套检查且不支持标注在类成员上,比如你的对象A包含了对象B,对象B需要标注@Valid注解才可以进行嵌套检查,如果你要检查的对象是个List<泛型>,泛型也是不会被检查的,因为注解校验只对目标对象的成员进行检查

    这些是应用层面的一些理解,这两个注解的历史发展和源码我没有深究,搜了下互联网也没有好的文章能详细介绍这两个注解,于是测试了一番发出来做个备忘。

    相关文章

      网友评论

          本文标题:Spring @Valid和@Validate的简单理解

          本文链接:https://www.haomeiwen.com/subject/umifudtx.html