Hibernate-Validator具体的逻辑代码处理

举报
object 发表于 2024/03/04 14:44:55 2024/03/04
【摘要】 在平常开发中,我们应该会接触到hibernate-Validator校验框架,但是对于其具体的作用和对一些特殊情况的判断可能不是很了解,这个时候就需要看源码,但是源码需要单独找一下。一般来说,我们自定义校验注解的时候,有一个注解@Constraint,其作用是说明逻辑处理类,但是框架自带的类并未填值@Constraint( validatedBy = {} // 理论这里是说明校验器,...

在平常开发中,我们应该会接触到hibernate-Validator校验框架,但是对于其具体的作用和对一些特殊情况的判断可能不是很了解,这个时候就需要看源码,但是源码需要单独找一下。

一般来说,我们自定义校验注解的时候,有一个注解@Constraint,其作用是说明逻辑处理类,但是框架自带的类并未填值

@Constraint(
    validatedBy = {} // 理论这里是说明校验器,即java的逻辑处理类
)
@Documented
@Constraint(
    validatedBy = {} // @Length的代码逻辑处理类为空
)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(Length.List.class)
public @interface Length {
// 源框架的@Length的注解内容
}

具体的逻辑处理类在该包该依赖下:

依赖:hibernate-validator-6.1.6.Final.jar(具体版本可能不同)

包名:org.hibernate.validator.internal.constraintvalidators

这个包下有很多validator结尾的类名,这些就是具体的校验注解的校验器。

至于他们的对照关系,例如@Max 对应哪个,  这个尽量根据名字来进行匹配即可。

// todo 按照代码原理来说,注解和校验器之间肯定应该有一个对照关系,但是我暂未找到,后续找到了再进行补充。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。