我们正在使用HibernateValidator,并且存在以下问题:
我们创建自己的验证器对象,它实现了ConstraintValidator。验证器第一次验证任何特定的约束时,它会调用该约束的初始化代码。这导致性能问题。有没有什么办法可以告诉HibernateValidator在加载时运行约束的初始化,而不是第一次实际验证约束?
由于
答案 0 :(得分:1)
没有这样的方法。该规范基本上只是说:
约束验证实现实例的生命周期是 未定义。允许兼容的实现缓存 从中检索的ConstraintValidator实例 ConstraintValidatorFactory。 initialize方法由。调用 任何使用约束之前的Bean验证提供程序 实施
只保证在 isValid 调用之前调用 initialize 。没有办法预先初始化。 initialize 的原因只被调用一次,因为Validator缓存了 ConstraintValidator 实例,但这不是我所依赖的。
如果您确实想确保在启动时调用 initialize ,则可以在此阶段进行一些预热验证。
OOI,您在初始化中做了什么,它会成为性能问题?