0

HibernateValidator を使用しており、次の問題があります。

ConstraintValidator を実装する独自のバリデータ オブジェクトを作成します。バリデーターは、特定の制約を初めて検証するときに、その制約の初期化コードを呼び出します。これにより、パフォーマンスの問題が発生しています。Constraint が実際に検証されるのは初めてではなく、読み込み時に HibernateValidator に Constraint の初期化を実行するように指示する方法はありますか?

ありがとう

4

1 に答える 1

2

そのような方法はありません。仕様は基本的に次のように述べています。

制約検証実装インスタンスのライフサイクルは未定義です。準拠した実装では、ConstraintValidatorFactory から取得した ConstraintValidator インスタンスをキャッシュできます。初期化メソッドは、制約の実装を使用する前に、Bean 検証プロバイダーによって呼び出されます。

isValid呼び出しの前にinitializeが呼び出されることが保証されるだけです。事前に初期化する方法はありません。初期化が一度だけ呼び出される理由は、Validator がConstraintValidatorインスタンスをキャッシュするためですが、これは私が頼りにするものではありません。

起動時にinitializeが呼び出されることを本当に確認したい場合は、このフェーズでウォームアップ検証を行うことができます。

OOI、パフォーマンスの問題になる初期化で何をしていますか?

于 2012-08-21T14:25:16.100 に答える