首页 > 其他分享 >@Valid和@Validated区别

@Valid和@Validated区别

时间:2024-02-26 17:44:33浏览次数:26  
标签:验证 Spring 区别 校验 Valid 注解 Validated

@Valid 和 @Validated 都是用来在Java中进行数据校验的注解,但它们来自不同的框架并服务于不同的目的:

@Valid:

@Valid 是Java EE(现在是Jakarta EE)规范的一部分,具体来说是JSR 303/JSR 349(Bean Validation)的标准注解。
它用于验证对象属性,当使用在方法参数上时,会在方法调用前自动触发该参数对象的约束验证。
Hibernate Validator 是 Bean Validation 规范的一个实现,提供了丰富的内置验证注解如 @NotNull、@Size、@Pattern 等。
@Validated:

@Validated 是Spring Framework提供的一个注解,它扩展了Bean Validation的功能,并且与Spring的环境更加紧密集成。
通过使用@Validated可以支持分组验证,允许根据不同的业务场景执行不同组别的验证规则。
Spring MVC中结合@ControllerAdvice和@ExceptionHandler等可以处理校验失败时的情况,提供统一的错误响应处理。
@Validated还可以与Spring AOP结合,实现在方法级别或类级别的验证。

总结来说,

  1. 校验级别:@Valid支持JSR-303和JSR-349规范,适用于Bean Validation API;@Validated是Spring框架提供的扩展,支持更多的校验级别。
  2. 校验目标:@Valid主要用于验证JavaBean对象的属性;@Validated主要用于验证方法参数和方法返回值。
  3. 嵌套校验:@Valid支持嵌套校验,可以递归地对复合对象中的属性进行校验;@Validated不支持嵌套校验,需要使用@Valid注解来触发嵌套校验。

标签:验证,Spring,区别,校验,Valid,注解,Validated
From: https://www.cnblogs.com/atq999/p/18034838

相关文章

  • 版权(copyright) 和 许可(license) 的区别
    版权(copyright)和许可(license)的区别XavZewen于2021-06-2300:45:39发布阅读量3.3k收藏1点赞数1分类专栏:小知识文章标签:copyleftlicense版权小知识专栏收录该内容7篇文章0订阅订阅专栏文章目录版权(copyright)和许可(license)的区别版权(copyright)许可(li......
  • [MYSQL] MYSQL 8解决 Invalid default value for `created_at`(timestamp)
    1问题描述问题背景执行从MYSQL5.7导出,并在MYSQL8.0.33的数据库中执行DDL建表语句时,报Invaliddefaultvaluefor'create_at'...`create_at`timestampNOTNULLDEFAULT'0000-00-0000:00:00'COMMENT'创建时间/createdtime',...2原因分析表面原因:......
  • 关于 ‘--exec’ 参数( find 命令)及介绍 ‘xargs ’命令区别
    findgoal.log.*.gz-mtime+2-execrm-rf{}\;findgoal.log.*.gz-mtime+3|xargsrm-f前言:find命令一直都是系统管理员的常用命令之一,其参数中“-exec”尤其实用。而“xargs”命令,针对查询也有属于自己的见解。本文着重讲解的是围绕find命令查询为主线,使用-exe......
  • vue init webpack 和vue create的几点区别
    vueinitwebpack和vuecreate的几点区别:https://blog.csdn.net/xilejie/article/details/130061075?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170891269616800184194526%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request......
  • 在K8S中,Pod亲和性和反亲和性作用区别有哪些?该如何使用?
    1.Pod亲和性(PodAffinity)作用:资源协同:当Pod需要与具有特定标签的Node或已经在特定Node上运行的Pod紧密合作时,比如共享硬件加速器或者进行高效的数据交互,可以利用Pod亲和性将这些Pod调度到一起。负载分片:在大规模集群中,可以根据业务需求,将相似类型的Pod调度到同一组Node上,以......
  • 在K8S中,"节点亲和性"和"节点选择器"的区别在哪里?
    在Kubernetes(K8s)中,“节点选择器”(NodeSelector)和“节点亲和性”(NodeAffinity)都是用来指导Pod调度到合适节点的机制,但它们在功能和灵活性上有一定的区别:节点选择器(NodeSelector):是较早且较为基础的一种调度策略,用于简单匹配节点的标签(labels)。当在Pod的规范中定义了节点选择......
  • validation参数检验
    SpringValidation1.导入validation坐标2.参数上添加@Pattern注解,制定校验规则3.在Controller类上添加@Validated注解(4.在全局异常处理器中处理参数校验失败的异常)实体参数校验实体类的成员变量添加注解@NotNull:不能为null,但可以为empty(""),一般用在基本数据类型的非......
  • mysql access denied for root ... mysqld –skip-grant-tables 命令失效 ... Failed
    <!--密码突然登录不上MySQL了,久了也不晓得是不是密码不正确...只能改密码...一年难得碰一次,感觉每次总有莫名其妙的问题--><!--修改方案只找到一个,就是无密码验证开启mysql服务,然后登录,设置新密码--><!--mysql版本不同有些命令无效,大概分高低两版本--><!--低版命令我......
  • Arrow和ArrowStream格式的区别
    Arrow是Apache软件基金会的一个顶级项目,它提供了一种内存布局格式,用于在不同系统之间高效地共享数据。Arrow旨在提供一种跨平台、跨语言的数据交换格式,以便在大数据处理和分析领域中提高数据处理效率。在Arrow中,数据可以被序列化为不同的格式,其中两种主要格式是Ar......
  • Python中生成器和迭代器的概念及两者区别
    本文详细介绍Python中生成器和迭代器的概念及两者区别。并通过一个案例分析两者在实际应用中的性能差异。 生成器生成器是一种特殊类型的迭代器,它使用函数和yield关键字定义,可以像普通函数一样调用和执行。生成器在每次迭代时产生一个值,并在下一次迭代时恢复执行。 在......