0

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

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

谢谢

4

1 回答 1

2

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

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

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

如果您真的想确保在启动时调用初始化,您可以在此阶段进行一些预热验证。

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

于 2012-08-21T14:25:16.100 回答