HibernateValidator 如何在 validatedBy 为空时找到 ConstraintValidator?
How HibernateValidator finds ConstraintValidator when validatedBy is empty?
我想知道 Hibernate 如何找到扩展 ConstraintValidator
接口的 NullValidator
class 即使 @Null
注释定义如下:
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = { })
public @interface Null {}
validatedBy
只需要为自定义(即用户创建的)约束指定。 Hibernate 已知的所有内置约束都会自动映射。请参阅以下代码,它出现在 ConstraintDescriptorImpl
和 XmlMappingParser
中:
if ( constraintHelper.isBuiltinConstraint( annotationType ) ) {
constraintDefinitionClasses.addAll( constraintHelper.getBuiltInConstraints( annotationType ) );
}
else {
Class<? extends ConstraintValidator<?, ?>>[] validatedBy = annotationType
.getAnnotation( Constraint.class )
.validatedBy();
constraintDefinitionClasses.addAll( Arrays.asList( validatedBy ) );
}
ConstraintHelper
有一个所有内置约束的列表,这些注解类型可以通过isBuiltinConstraint
方法找到。
我想知道 Hibernate 如何找到扩展 ConstraintValidator
接口的 NullValidator
class 即使 @Null
注释定义如下:
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = { })
public @interface Null {}
validatedBy
只需要为自定义(即用户创建的)约束指定。 Hibernate 已知的所有内置约束都会自动映射。请参阅以下代码,它出现在 ConstraintDescriptorImpl
和 XmlMappingParser
中:
if ( constraintHelper.isBuiltinConstraint( annotationType ) ) {
constraintDefinitionClasses.addAll( constraintHelper.getBuiltInConstraints( annotationType ) );
}
else {
Class<? extends ConstraintValidator<?, ?>>[] validatedBy = annotationType
.getAnnotation( Constraint.class )
.validatedBy();
constraintDefinitionClasses.addAll( Arrays.asList( validatedBy ) );
}
ConstraintHelper
有一个所有内置约束的列表,这些注解类型可以通过isBuiltinConstraint
方法找到。