在@Constraint中清空validatedBy

Tom*_*ker 16 java hibernate-validator bean-validation

我注意到所有内置约束都具有validatedBy参数的空值@Constraint.即@Constraint(validatedBy = {})

首先,为什么他们允许空值validatedBy?我认为你可以将它留空仅用于不需要附加验证的约束组合?

另外,请注意Hibernate Validator仍然可以为每个内置约束找到一个验证器实现类,尽管它validatedBy是空的,但如果我将validatedBy留给我的约束,我的自定义验证器永远不会被拾取.这是为什么?

谢谢.

axt*_*avt 11

那些内置的处理以特定的特定于实现的方式处理,并且它们的验证器以编程方式配置.

对于Hibernate Validator,它完成了ConstraintHelper.java.我认为你的自定义约束不能达到同样的效果.

  • 不,您必须在Hibernate的注释中指定自定义验证器才能找到它. (3认同)
  • 现在,您可以将约束定义(接口)和验证器本身解耦,将 validBy 保留为空,并使 Hibernate 使用 ServiceLoader 等来定位验证器:https://docs.jboss.org/hibernate/stable/validator/reference /en-US/html_single/#_constraint_definitions_via_code_serviceloader_code (3认同)