news 2026/10/26 6:52:05

Hibernate-Validate参数校验之校验参数值

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Hibernate-Validate参数校验之校验参数值

校验对象和校验方法参数都会获取元数据,这里的元数据就是上一节所说的内容,本章节会讲述怎么根据元数据进行参数校验,其实就是根据元数据的MetaConstraint和CascadingMetaData来校验参数值

1、hibernate参数校验的入口

1.1、校验对象

ValidatorImpl的validate方法

1.2、校验方法参数

2、校验对象

3.1、MetaConstraint校验

  • 遍历分组参数,针对每个分组进行校验MetaConstraint

  • 判断当前分组是否是Default分组,因为Default分组缓存了MetaConstraint,如果是Default分组直接可以获取缓存的MetaConstraint,否则需要遍历所有的MetaConstraint,然后判断MetaConstraint是否是当前分组

  • 遍历MetaConstraint校验

  • MetaConstraint校验,需要获取当前字段值,然后校验当前字段值

  • 获取当前字段值是通过valueContext.getValue,这里通过location反射获取字段的值

  • 如果location是FieldConstraintLocation,则通过反射获取字段的值

  • 如果location是TypeArgumentConstraintLocation,则通过最外层的FieldConstraintLocation反射获取字段的值

  • MetaConstraint.validateConstraint,这里判断valueExtractionPath是否为空,如果是空则说明应用在字段上,直接使用validator验证,这里的validator就是校验注解对应的validator,例如@NotEmpty注解对应的validator

  • MetaConstraint.validateConstraint,这里判断valueExtractionPath是否为空,如果不空则说明应用在字段的类型参数上,这个时候就需要使用valueExtractionPath来获取当前校验的值,valueExtractionPath是一个链表结构,会递归获取下一个valueExtractionPath抽取下一层的值,直到valueExtractionPath没有后继的valueExtractionPath

3.2、Cascadable校验

  • 遍历所有Cascadable
  • 获取当前值,getCascadableValue根据Cascadable是字段、参数、返回值获取当前值不一样

  • 这里会递归ContainerCascadingMetaData,ContainerCascadingMetaData会把整个字段的参数类型递归存储,依次遍历每一层ContainerCascadingMetaData
  • 如果当前ContainerCascadingMetaData的cascading是true,则校验当前value;
  • 如果当前ContainerCascadingMetaData有子节点(意思就是说当前节点类型还是参数化类型),则遍历子节点ContainerCascadingMetaData,获取对应的ValueExtractorDescriptor,抽取子节点的值,然后校验子节点的值

3、校验方法参数

校验方法参数和校验对象类似,这里不再细说

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/26 9:11:57

快手因低俗内容被罚1.19亿 回应称教训极其惨痛,将以此为戒

雷递网 乐天 2月7日2月6日,北京市互联网信息办公室依据《中华人民共和国网络安全法》《中华人民共和国行政处罚法》等法律法规,对北京快手科技有限公司处警告、1.191亿元罚款处罚,同时责令其限期改正、依法依约处置账号、从严处理责任人。事情…

作者头像 李华
网站建设 2026/10/23 10:41:06

ClickHouse 索引优化:提升大数据查询速度的秘诀

ClickHouse 索引优化:提升大数据查询速度的秘诀 关键词:ClickHouse、索引优化、大数据查询、稀疏索引、数据分区、数据排序、查询优化 摘要:本文深入解析ClickHouse索引体系的核心原理,通过稀疏索引、数据分区、排序键设计等关键技…

作者头像 李华
网站建设 2026/10/21 12:03:57

Qwen3-ASR-1.7B快速上手:音频时长限制与分段处理策略

Qwen3-ASR-1.7B快速上手:音频时长限制与分段处理策略 1. 引言 语音识别技术正在改变我们处理音频内容的方式。Qwen3-ASR-1.7B作为阿里通义千问推出的端到端语音识别模型,凭借其17亿参数和多语言支持能力,为开发者提供了强大的离线转写工具。…

作者头像 李华
网站建设 2026/10/20 10:06:47

AI头像生成器技术揭秘:深度学习模型架构解析

AI头像生成器技术揭秘:深度学习模型架构解析 1. 从一张照片到惊艳头像:我们到底在用什么技术 你有没有试过上传一张普通自拍照,几秒钟后就得到一张专业级的肖像?不是简单地加滤镜,而是连发丝纹理、皮肤质感、光影层次…

作者头像 李华
网站建设 2026/10/26 7:02:19

Shadow Sound Hunter人工智能模型核心架构解析

Shadow & Sound Hunter人工智能模型核心架构解析 1. 这个模型到底能做什么 第一次看到Shadow & Sound Hunter这个名字,很多人会好奇:这名字听起来像电影里的特工代号,但它其实是一个专注于多模态感知与生成的人工智能模型。简单来说…

作者头像 李华
网站建设 2026/10/25 19:11:13

Z-Image-Turbo孙珍妮LoRA效果展示:动态姿势与自然肢体比例生成

Z-Image-Turbo孙珍妮LoRA效果展示:动态姿势与自然肢体比例生成 1. 模型简介与部署 Z-Image-Turbo孙珍妮LoRA是基于Z-Image-Turbo模型开发的特殊版本,专注于生成具有动态姿势和自然肢体比例的人物图像。该模型通过LoRA(Low-Rank Adaptation&…

作者头像 李华