news 2026/6/15 18:23:30

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/6/15 12:39:15

如何通过投资教育提升自身能力

如何通过投资教育提升自身能力 关键词:投资教育、自身能力提升、教育投资策略、学习方法、职业发展 摘要:本文围绕如何通过投资教育提升自身能力展开,深入探讨了投资教育的核心概念、具体策略与操作步骤。详细分析了投资教育背后的数学模型&a…

作者头像 李华
网站建设 2026/6/15 12:39:28

服务器运维(二十九)Gulp精准打包指定文件非全部—东方仙盟

一、核心实现思路先拆解需求,再分步实现:指定文件打包:通过 Gulp 的 src() 方法精准匹配文件路径 / 文件名,结合通配符、排除规则实现;加载真实环境配置:通过环境变量(process.env)区…

作者头像 李华
网站建设 2026/6/15 12:41:40

某多多anti-content参数

个人思路仅供参考: 这里是跟着趴菜哥的视频进行实战操作的大家可以去小破站搜:小爬菜咦 这个是他的主页:https://space.bilibili.com/3546924980373556?spm_id_from333.1387.follow.user_card.click 该文章仅供学习参考,不接受商用价值---如有侵权,联…

作者头像 李华
网站建设 2026/6/14 16:18:40

大数据领域分布式计算的可扩展性研究

大数据领域分布式计算的可扩展性研究关键词:分布式计算、可扩展性、水平扩展、垂直扩展、CAP定理、弹性伸缩、负载均衡摘要:在数据量以“ZB”为单位增长的今天,单机计算早已无法满足需求。分布式计算通过多台机器协作处理海量数据&#xff0c…

作者头像 李华
网站建设 2026/6/15 13:35:42

通义千问3-VL-Reranker-8B多模态重排原理:VL架构设计与训练逻辑解析

通义千问3-VL-Reranker-8B多模态重排原理:VL架构设计与训练逻辑解析 你是不是经常遇到这样的问题:在网上搜索“一只猫在沙发上睡觉”,结果搜出来的图片五花八门,有狗在沙发上、猫在窗台上,甚至还有完全无关的商品图&a…

作者头像 李华