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 嵌套校验
相关示例代码如下图