HibernateValidator在首次评估时初始化约束,而不是在系统加载时

时间:2012-08-21 11:15:58

标签: bean-validation

我们正在使用HibernateValidator,并且存在以下问题:

我们创建自己的验证器对象,它实现了ConstraintValidator。验证器第一次验证任何特定的约束时,它会调用该约束的初始化代码。这导致性能问题。有没有什么办法可以告诉HibernateValidator在加载时运行约束的初始化,而不是第一次实际验证约束?

由于

1 个答案:

答案 0 :(得分:1)

没有这样的方法。该规范基本上只是说:

  

约束验证实现实例的生命周期是   未定义。允许兼容的实现缓存   从中检索的ConstraintValidator实例   ConstraintValidatorFactory。 initialize方法由。调用   任何使用约束之前的Bean验证提供程序   实施

只保证在 isValid 调用之前调用 initialize 。没有办法预先初始化。 initialize 的原因只被调用一次,因为Validator缓存了 ConstraintValidator 实例,但这不是我所依赖的。

如果您确实想确保在启动时调用 initialize ,则可以在此阶段进行一些预热验证。

OOI,您在初始化中做了什么,它会成为性能问题?