@Valid 和 @Validated 区别和使用方法

1、相关依赖

Valid 依赖包

复制代码
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
</dependency>

Validated的依赖包

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>4.0.2.RELEASE</version>

</dependency>

说明springBoot 项目依赖了spring-boot-starter-parent ,因此不需要额外依赖spring-contex

2、二者的介绍以及区别

2.1 、相关介绍

1、@Valid 注解,是 Bean Validation 所定义,可以添加在普通方法、构造方法、方法参数、方法返回、成员变量上,表示它们需要进行约束校验。

2、@Validated 注解,是 Spring Validation 所定义,可以添加在类、方法参数、普通方法上,表示它们需要进行约束校验。

两者的区别在于 @Validated 有 value 属性,支持分组校验,即根据不同的分组采用不同的校验机制,@Valid 可以添加在成员变量上,支持嵌套校验。所以建议的使用方式就是:启动校验(即 Controller 层)时使用 @Validated 注解,嵌套校验时使用 @Valid 注解,这样就能同时使用分组校验和嵌套校验功能。

2.2、分组校验

对于同一个参数,不同的场景可能需要不同的校验,这个时候可以用分组校验能力。比如新增商品的时候,goodId 为空,但是更新商品的goodId 值则不能为空。示例如下

请求接口代码如下

其中UpdataGoods 和InsertGoods是按照Spring Validation 所定义 相关语法规范定义的 接口

2.3 嵌套校验

相关示例代码如下图

相关推荐
早点睡觉好了1 分钟前
JAVA中基本类型和包装类型的区别
java·开发语言
雅俗共赏zyyyyyy4 分钟前
SpringBoot集成配置文件加解密
java·spring boot·后端
计算机学姐12 分钟前
基于SpringBoot的送货上门系统【2026最新】
java·vue.js·spring boot·后端·mysql·spring·tomcat
码农水水15 分钟前
国家电网Java面试被问:二叉树的前序、中序、后序遍历
java·开发语言·面试
Yana.nice19 分钟前
JMS与JDBC
java
Respect@19 分钟前
qml之TableViewColumn
开发语言·qml
小湘西21 分钟前
Elasticsearch 的一些默认配置上下限
java·大数据·elasticsearch
不吃橘子的橘猫26 分钟前
NVIDIA DLI 《Build a Deep Research Agent》学习笔记
开发语言·数据库·笔记·python·学习·算法·ai
算法与双吉汉堡30 分钟前
【短链接项目笔记】6 短链接跳转
java·开发语言·笔记·后端·springboot
学Linux的语莫31 分钟前
python的基础使用
开发语言·python