首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当validatedBy为空时,HibernateValidator如何查找ConstraintValidator?

当validatedBy为空时,Hibernate Validator会根据约束注解的类型和约束注解的属性来查找对应的ConstraintValidator。

具体查找过程如下:

  1. 首先,Hibernate Validator会检查约束注解上是否有指定的validatedBy属性。如果有,则直接使用validatedBy属性指定的ConstraintValidator类进行验证。
  2. 如果validatedBy属性为空,则Hibernate Validator会根据约束注解的类型来查找对应的ConstraintValidator。
    • 如果约束注解是一个复合注解(即注解上有@Constraint注解),则会递归查找复合注解中的约束注解,直到找到一个非复合注解为止。
    • 如果约束注解是一个非复合注解,则会查找与该注解同名的ConstraintValidator类。查找规则如下:
      • 首先,Hibernate Validator会在同一个包下查找与约束注解同名的ConstraintValidator类。
      • 如果在同一个包下找不到,则会在约束注解所在包的子包中查找与约束注解同名的ConstraintValidator类。
      • 如果还是找不到,则会在约束注解所在包的父包中查找与约束注解同名的ConstraintValidator类。
      • 如果最终还是找不到,则会抛出异常。

总结:

当validatedBy属性为空时,Hibernate Validator会根据约束注解的类型和约束注解的属性来查找对应的ConstraintValidator类进行验证。

腾讯云相关产品和产品介绍链接地址:

腾讯云提供了云计算相关的产品和服务,包括云服务器、云数据库、云存储等。具体可以参考腾讯云官方网站的相关文档和产品介绍页面:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 【hibernate validator】(六)创建自定义约束

    phoneNumber;     // ... } 用法 @Target 定义约束所支持的目标元素类型 @Retention(RUNTIME):指定此类型的注释将在运行时通过反射方式提供 @Constraint(validatedBy...约束验证器 public class CheckCaseValidator implements ConstraintValidator {     private...将有效负载传递给约束验证器 - 在ValidatorFactory初始化期间定义约束验证器有效载荷 ValidatorFactory validatorFactory = Validation.byProvider( HibernateValidator.class...错误讯息 org.hibernate.validator.referenceguide.chapter06.CheckCase.message = 案例模式必须为{value}。 4....); 二、类级别约束 实现一个类级别约束 @Target({ TYPE, ANNOTATION_TYPE }) @Retention(RUNTIME) @Constraint(validatedBy

    19420

    如何查找Linux系统中密码为空的所有用户

    接下来我将简要的解释如何在 中查找密码为空的帐户。如何查找Linux系统中密码为空的所有用户如何查找Linux系统中密码为空的所有用户在进入主题之前,让我们快速回顾一下Shadow文件及其用途。...如果此字段为空,则该用户没有密码。字段3(上次更改)- 此字段显示最后一次修改密码的时间。如果此字段包含 0,则用户在下次登录时将被强制更改密码。...因此,如果影子文件中的第二个字段为空,则用户没有密码。下面,我向您展示一个查找所有无密码用户帐户的示例。...:' | cut -d: -f1图片如何查找Linux系统中密码为空的所有用户如何查找Linux系统中密码为空的所有用户查看特定账户的密码状态上述命令将列出所有没有密码的帐户。...Linux系统中密码为空的所有用户如何查找Linux系统中密码为空的所有用户图片在Linux中锁定账户有时,您想要锁定一个没有密码的账户。

    6.2K30

    入参校验1

    默认是true,表示请求中一定要传入对应的参数,否则会报404错误,如果设置为false时,当请求中没有此参数,将会默认为null,而对于基本数据类型的变量,则必须有值,这时会抛出空指针异常。...如果允许空值,则接口中变量需要使用包装类来声明。 defaultValue:参数的默认值,如果请求中没有同名的参数时,该变量默认为此值。...@AssertTrue 限制必须是true booleanBoolean:not null时才校验 @Max(value) 限制必须为一个小于等于value指定值的整数,value是long型 byte.../short/int/long/float/double及其对应的包装类;包装类对象not null时才校验 @Min(value) 限制必须为一个大于等于value指定值的整数,value是long型...,value是字符串类型 byte/short/int/long/float/double及其对应的包装类;包装类对象not null时才校验 @Digits(integer, fraction) 限制必须为一个小数

    27040

    详解java参数校验之:顺序校验、自定义校验、分组校验(@Validated @GroupSequence)

    当使用 @Validated、@GroupSequence 和自定义校验规则时,可以实现对实体类属性的分组校验 首先,定义验证分组的接口: public interface Group1 {} public...接下来,定义一个自定义校验注解和校验器: @Target({ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) @Constraint(validatedBy...extends Payload>[] payload() default {}; } public class CustomValidator implements ConstraintValidator...当将 MethodValidationPostProcessor 添加到 Spring 容器中时,它会自动拦截标注了 @Validated 注解的方法,并在方法调用之前执行参数校验操作。...如果集合不为空,说明存在校验失败的情况。可以通过遍历集合中的 ConstraintViolation 对象,获取具体的校验错误信息进行处理。

    98410

    SpringBoot中处理校验逻辑的两种方式,真的很机智!

    @Null:被注释的属性必须为null; @NotNull:被注释的属性不能为null; @AssertTrue:被注释的属性必须为true; @AssertFalse:被注释的属性必须为false;...Controller层创建一个切面,在其环绕通知中获取到注入的BindingResult对象,通过hasErrors方法判断校验是否通过,如果有错误信息直接返回错误信息,验证通过则放行; /** * HibernateValidator...首先自定义一个校验注解类FlagValidator,然后添加@Constraint注解,使用它的validatedBy属性指定校验逻辑的具体实现类; /** * 用户验证状态是否在指定范围内的注解...constraintValidatorContext) { boolean isValid = false; if(value==null){ //当状态为空时使用默认值...不过我们可以在上面的Asserts类中添加一些工具方法来增强它的功能,比如判断是否为空和判断长度等都可以自己实现。

    1.2K20

    Spring Boot 使用 JSR303 实现参数验证

    , errorMap); } } 分组解决校验 新增和修改对于实体的校验规则是不同的,例如id是自增的时候,新增时id要为空,修改则必须不为空;新增和修改,若用的恰好又是同一种实体,那就需要用到分组校验...Result.ok(); } } 测试如下: [ka1gxei9dr.png] 自定义校验注解 虽然JSR303和springboot-validator 已经提供了很多校验注解,但是当面对复杂参数校验时,...根据Bean Validation API 规范的要求: message属性, 这个属性被用来定义默认得消息模版, 当这个约束条件被验证失败的时候,通过 此属性来输出错误信息。...@Constraint(validatedBy = ListValueConstraintValidator.class): 指明使用哪个校验器(类) 去校验使用了此标注的元素....如果一个约束标注支持多种类型的被校验元素的话, 那么需要为每个所支持的类型定义一个ConstraintValidator,并且注册到约束标注中。

    78140

    SpringBoot 使用 JSR303 实现参数验证

    , errorMap); } } 分组解决校验 新增和修改对于实体的校验规则是不同的,例如id是自增的时,新增时id要为空,修改则必须不为空;新增和修改,若用的恰好又是同一种实体,那就需要用到分组校验...创建约束规则 @Documented @Constraint(validatedBy = { ListValueConstraintValidator.class }) @Target({ METHOD...根据Bean Validation API 规范的要求: message属性, 这个属性被用来定义默认得消息模版, 当这个约束条件被验证失败的时候,通过 此属性来输出错误信息。...@Constraint(validatedBy = ListValueConstraintValidator.class): 指明使用哪个校验器(类) 去校验使用了此标注的元素....如果一个约束标注支持多种类型的被校验元素的话, 那么需要为每个所支持的类型定义一个ConstraintValidator,并且注册到约束标注中。

    67230
    领券