引言:
@Validated 是在@Valid 注解基础之上,提供了更丰富的功能, 其中之一就是分组校验. 那么什么是分组校验呢?
相信大家在实际工作中, 一定会遇到这样的场景. request的某个参数, 在新增时不需要前端传, 但是编辑时需要前端传, 其余字段也都是一模一样的, 没办法, 还是得建两个request. 用分组校验就是为了解决这个问题的.
废话不多说, 上代码:

  • 定义分组
    这里定义了一个app分组, 注意, 该类需要继承Default
import javax.validation.groups.Default;/*** @author Lynn* @date 2022/11/14 10:57*/
public interface AppGroup extends Default {}
  • request字段上加上AppGroup 分组
    这样只有在指定为AppGroup 分组时, 才会去对该字段进行校验
/*** @author Lynn* @date 2022/9/20 17:59*/
@Data
@EqualsAndHashCode(callSuper = true)
public class ProductQueryDetailRequest extends ProductBaseRequest {/*** 商品类型*/@NotNull(message = "商品类型不能为空")@EnumValid(message = "商品类型输入错误", enumClass = ProductTypeEnum.class)private Integer productType;/*** app来源*/@NotBlank(groups = {AppGroup.class}, message = "app来源不能为空")@EnumValid(message = "app来源输入错误", enumClass = AppSourceEnum.class)private String appSource;
}
  • Controller层注解使用
    @Validated({AppGroup.class}) 指定分组为AppGroup
/*** 查询商品详情** @param request {@link ProductQueryDetailRequest}* @return {@link BaseResponse<ProductAppDetailResponse>}*/@PostMapping("/detail/query")public BaseResponse<ProductAppDetailResponse>queryDetail(@RequestBody @Validated({AppGroup.class}) ProductQueryDetailRequest request) {super.checkUserValidation(request);ProductDto dto = EntityConverterUtils.convert(request, ProductDto.class);return BaseResponse.success(EntityConverterUtils.convert(this.getServiceImpl(dto.getProductType()).queryAppProductDetail(dto), ProductAppDetailResponse.class));}

这样在Controller层指定AppGroup分组, 才会对appSource字段进行校验, 不指定分组就不校验该字段.
以此类推, 可以定义不同的分组, 去匹配不通的场景, 就可以减少request的创建.

@Validated注解分组的使用相关推荐

  1. java分组校验_SpringBoot @Validated注解实现参数分组校验的方法实例

    前言 在前后端分离开发的时候我们需要用到参数校验,前端需要进行参数校验,后端接口同样的也需要,以防传入不合法的数据. 1.首先还是先导包,导入pom文件. org.springframework.bo ...

  2. @Validated注解详解,分组校验,嵌套校验,@Valid和@Validated 区别,Spring Boot @Validated

    技术栈: spring boot 2.3.3.RELEASE hibernate-validator 文末附项目源代码 目录 简述 项目依赖 全局异常处理类 基础参数校验 实体类 控制类 测试 嵌套参 ...

  3. Spring中@NotEmpty,@NotBlank,@NotNull,@Valid,@Validated注解简介及简单使用

    前言 在开发中,为了代码的稳定性不报空指针异常,经常需要判断前端传过来的值是否为空,为空的话就返回前端值为空的提示,才能进行下一步的操作 Maven依赖的引入: springboot 2.3.0 以后 ...

  4. SpringBoot @Validated注解实现参数校验

    1. 前言 做web开发有一点很烦人就是要校验参数,基本上每个接口都要对参数进行校验,比如一些格式校验 非空校验都是必不可少的.如果参数比较少的话还是容易 处理的一但参数比较多了的话代码中就会出现大量 ...

  5. @Validated注解和@Valid注解区别

    @Validated注解和@Valid注解详解 引入依赖 @Validated注解和@Valid注解区别 @Valid注解使用场景演示 嵌套校验和controller层请求参数校验 @Valid注解校 ...

  6. @Valid和@Validated注解校验List<Object>

    @Valid和@Validated注解校验List< Object> spring 4整合hibernate-validator6 1.导包 <dependency><g ...

  7. @Validated注解校验

    前后端交互中字段校验必不可少,当对象中有大量变量该如何校验?使用@validated注解是个不错的选择. @Valid是使用hibernate validation的时候使用:而@Validated  ...

  8. 记@Validated注解

    @Validated注解是为了给请求接口时,判断对象的值是否是你需要的属性做判断. 在编程中我使用的主要用的有: 1.@NotNull     (不能为null) 2.@NotEmpty (不为空也不 ...

  9. @Valid 和 @Validated 注解用法详解

    目录 案例引入 @Valid 详解 @Validated 详解 @Valid 和 @Validated 比较 案例引入 下面我们以新增一个员工为功能切入点,以常规写法为背景,慢慢烘托出 @Valid ...

最新文章

  1. VMware虚拟机上的文件如何和Windows进行共享
  2. 【Lolttery】项目开发日志 (五)目标dubbox,前进
  3. selenium 获取href find_element_by_xpath
  4. BundleFusion代码框架讲解
  5. oracle创建、删除索引等操作
  6. 计算机编程结束进程代码,M代码如何停止CNC编程的程序
  7. 【Rayeager PX2】Rayeager PX2开发板上安装FreeBSD
  8. 配置quick-cocos2d-x-develop OpenGL version too old
  9. 学习python:模块的建立与发布
  10. hive启动报错 java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7B
  11. VS2010下编译mp4v2及在项目中的使用
  12. 灰色按钮激活程序的原理 (学习)
  13. Unity写的3D人工智能棋类博弈小游戏-四子棋
  14. 青花瓷运用-下载历史版本App
  15. Win7加密访问共享文件夹
  16. vue接口总是请求超时_解决在vue中axios请求超时的问题
  17. 【Python】SEBS模型计算蒸散发
  18. 工业物联网体系架构概述及基于工业物联网的智能制造
  19. 关于Abaqus+python提取s11残余应力(按路径提取)
  20. 软件需求工程--需求分析

热门文章

  1. 2021年10月18日
  2. Hudi学习02 -- Hudi核心概念
  3. 《武林外传》之(零) 管理演绎
  4. 毕设 深度学习疲劳驾驶检测 opencv python
  5. C++课程设计之通讯录管理系统
  6. 【正则表达式 】java 正则表达式 校验日期格式
  7. HDU 1325POJ 1308 Is it A tree ? [并查集+树判定]
  8. ps怎么切图后放html下,怎么使用PS切图?PS切图后怎么保存到本地?
  9. IE、360浏览器兼容解决
  10. I.MX6 PHY fixup 调用流程 hacking