@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 嵌套校验

相关示例代码如下图

相关推荐
草莓熊Lotso1 小时前
C++ STL set 系列完全指南:从底层原理、核心接口到实战场景
开发语言·c++·人工智能·经验分享·网络协议·算法·dubbo
珹洺1 小时前
Java-Spring实战指南(三十四)Android Service实现后台音乐播放功能
android·java·spring
咖啡の猫3 小时前
搭建Python开发环境
开发语言·python
微学AI4 小时前
Rust语言的深度剖析:内存安全与高性能的技术实现操作
java·安全·rust
程序猿小蒜4 小时前
基于springboot的共享汽车管理系统开发与设计
java·开发语言·spring boot·后端·spring·汽车
lsp程序员0104 小时前
使用 Web Workers 提升前端性能:让 JavaScript 不再阻塞 UI
java·前端·javascript·ui
听风吟丶5 小时前
Java 8 Stream API 高级实战:从数据处理到性能优化的深度解析
开发语言·python
q***46525 小时前
在2023idea中如何创建SpringBoot
java·spring boot·后端
hygge9995 小时前
Spring Boot + MyBatis 整合与 MyBatis 原理全解析
java·开发语言·经验分享·spring boot·后端·mybatis
q***25215 小时前
Spring Boot接收参数的19种方式
java·spring boot·后端