インターフェース ContextCache

すべての既知の実装クラス:
DefaultContextCache

public interface ContextCache
ContextCache は、Spring TestContext フレームワーク内で Spring ApplicationContexts をキャッシュするための SPI を定義します。

ContextCache は、MergedContextConfiguration インスタンスによってキーが付けられた ApplicationContexts のキャッシュを保持し、最大サイズ一時停止モード、およびカスタム削除ポリシーが構成されている可能性があります。

Spring Framework 6.1 以降、この SPI には失敗回数の追跡増加のオプションサポートが含まれています。Spring Framework 7.0 以降、この SPI にはコンテキスト使用状況の登録登録解除のオプションサポートが含まれています。

根拠

コンテキストの初期化が複雑な場合、コンテキストキャッシングはパフォーマンスに大きなメリットをもたらす可能性があります。Spring コンテキスト自体の初期化は通常非常に高速ですが、コンテキスト内の一部の Bean- たとえば、JPA を操作するための組み込みデータベースまたは LocalContainerEntityManagerFactoryBean - 初期化には数秒かかる場合があります。多くの場合、テストスイートまたは JVM プロセスごとに 1 回だけその初期化を実行することが理にかなっています。

導入:
4.2
作成者:
Sam Brannen, Juergen Hoeller
関連事項:
  • フィールドの詳細

    • CONTEXT_CACHE_LOGGING_CATEGORY

      static final StringSE CONTEXT_CACHE_LOGGING_CATEGORY
      ContextCache 統計のレポートに使用されるロギングカテゴリの名前。
      関連事項:
    • DEFAULT_MAX_CONTEXT_CACHE_SIZE

      static final int DEFAULT_MAX_CONTEXT_CACHE_SIZE
      コンテキストキャッシュのデフォルトの最大サイズ: 32。
      導入:
      4.3
      関連事項:
    • MAX_CONTEXT_CACHE_SIZE_PROPERTY_NAME

      static final StringSE MAX_CONTEXT_CACHE_SIZE_PROPERTY_NAME
      ContextCache の最大サイズを正の整数として構成するために使用されるシステムプロパティ: "spring.test.context.cache.maxSize"。

      あるいは、SpringProperties メカニズムを介して構成することもできます。

      ContextCache の実装は、最大キャッシュサイズを実際にサポートする必要はないことに注意してください。詳細については、対応する実装のドキュメントを参照してください。

      導入:
      4.3
      関連事項:
    • CONTEXT_CACHE_PAUSE_PROPERTY_NAME

      static final StringSE CONTEXT_CACHE_PAUSE_PROPERTY_NAME
      ContextCache に保存されている非アクティブなアプリケーションコンテキストを一時停止するかどうかを構成するために使用されるシステムプロパティ: "spring.test.context.cache.pause"。

      デフォルトは on_context_switch です。非アクティブなアプリケーションコンテキストの一時停止を無効にするには、always または never に設定できます。例:

      -Dspring.test.context.cache.pause=never

      あるいは、SpringProperties メカニズムを介して構成することもできます。

      ContextCache の実装はコンテキスト一時停止のサポートは必須ではないことに注意してください。詳細については、対応する実装のドキュメントを参照してください。

      導入:
      7.0.3
      関連事項:
  • メソッドの詳細

    • contains

      boolean contains(MergedContextConfiguration key)
      指定されたキーのキャッシュされたコンテキストがあるかどうかを確認します。
      パラメーター:
      key - コンテキストキー。null
      戻り値:
      true (キャッシュに指定されたキーのコンテキストが含まれている場合)
    • get

      指定されたキーのキャッシュされた ApplicationContext を取得します。

      キャッシュされたアプリケーションコンテキストが以前に一時停止されていた場合は、再起動する必要があります。これは親コンテキストにも適用されます。

      さらに、ヒット数ミス数もそれに応じて更新する必要があります。

      パラメーター:
      key - コンテキストキー。null
      戻り値:
      対応する ApplicationContext インスタンス、またはキャッシュに見つからない場合は null 
      関連事項:
    • put

      使用すべきではありません。
      Spring Framework 7.0 から put(MergedContextConfiguration, LoadFunction) を推奨
      指定されたキーのキャッシュに ApplicationContext を明示的に追加し、カスタム削除ポリシーを尊重する可能性があります。
      パラメーター:
      key - コンテキストキー。null
      context - ApplicationContextnull ではない
      関連事項:
    • put

      指定されたキーのキャッシュに ApplicationContext を明示的に追加し、カスタム削除ポリシーを尊重する可能性があります。

      提供された ContextCache.LoadFunction が呼び出され、ApplicationContext がロードされます。

      カスタムの削除ポリシーを尊重する具体的な実装では、提供された LoadFunction を介して新しいコンテキストがロードされる前に、削除されたコンテキストがキャッシュから削除され、閉じられるように、このメソッドをオーバーライドする必要があります。

      パラメーター:
      key - コンテキストキー。null
      loadFunction - 指定されたキーのコンテキストをロードする関数。null ではありません
      戻り値:
      ApplicationContextnull ではない
      導入:
      7.0
      関連事項:
    • remove

      指定されたキーを持つコンテキストをキャッシュから削除し、ConfigurableApplicationContext のインスタンスである場合は明示的に閉じます。

      一般的に、このメソッドは、コンテキストをキャッシュから適切に削除するため (たとえば、カスタム削除ポリシーのため)、シングルトン Bean の状態が変更され、コンテキストとの将来の対話に影響を与える可能性がある場合に呼び出す必要があります。

      さらに、提供された HierarchyMode のセマンティクスを尊重する必要があります。詳細については、DirtiesContext.HierarchyMode の Javadoc を参照してください。

      パラメーター:
      key - コンテキストキー。null
      hierarchyMode - 階層モード。コンテキストが階層の一部ではない場合、null である可能性があります
    • getFailureCount

      default int getFailureCount(MergedContextConfiguration key)
      指定されたキーの失敗回数を取得します。

      失敗とは、指定されたキーの ApplicationContext をロードしようとして例外が発生することです。

      このメソッドのデフォルト実装は常に 0 を返します。具体的な実装では、このメソッドと incrementFailureCount(MergedContextConfiguration) を適切な動作でオーバーライドすることを強くお勧めします。Spring の標準 ContextContext 実装は、これらのメソッドを適切にオーバーライドすることに注意してください。

      パラメーター:
      key - コンテキストキー。null
      導入:
      6.1
      関連事項:
    • incrementFailureCount

      default void incrementFailureCount(MergedContextConfiguration key)
      指定されたキーの失敗回数を増やします。

      このメソッドのデフォルトの実装では何も行われません。具体的な実装では、このメソッドと getFailureCount(MergedContextConfiguration) を適切な動作でオーバーライドすることを強くお勧めします。Spring の標準 ContextContext 実装は、これらのメソッドを適切にオーバーライドすることに注意してください。

      パラメーター:
      key - コンテキストキー。null
      導入:
      6.1
      関連事項:
    • registerContextUsage

      default void registerContextUsage(MergedContextConfiguration key, ClassSE<?> testClass)
      提供された MergedContextConfiguration とその親のいずれかに対して ApplicationContext の使用を登録します。

      このメソッドのデフォルト実装は何も行いません。具体的な実装では、このメソッド、unregisterContextUsage(MergedContextConfiguration, Class)getContextUsageCount() を適切な動作でオーバーライドすることを強くお勧めします。Spring の標準 ContextContext 実装では、これらのメソッドが適切にオーバーライドされていることに注意してください。

      パラメーター:
      key - コンテキストキー。null
      testClass - アプリケーションコンテキストを使用しているテストクラス
      導入:
      7.0
      関連事項:
    • unregisterContextUsage

      default void unregisterContextUsage(MergedContextConfiguration key, ClassSE<?> testClass)
      指定された MergedContextConfiguration とその親の ApplicationContext の使用を登録解除します。

      他のテストクラスが同じアプリケーションコンテキストをアクティブに使用していない場合、構成された ContextCache.PauseMode に従ってアプリケーションコンテキストを一時停止する必要があります。

      このメソッドのデフォルト実装は何も行いません。具体的な実装では、このメソッド、registerContextUsage(MergedContextConfiguration, Class)getContextUsageCount() を適切な動作でオーバーライドすることを強くお勧めします。Spring の標準 ContextContext 実装では、これらのメソッドが適切にオーバーライドされていることに注意してください。

      パラメーター:
      key - コンテキストキー。null
      testClass - アプリケーションコンテキストを使用しなくなったテストクラス
      導入:
      7.0
      関連事項:
    • getContextUsageCount

      default int getContextUsageCount()
      現在使用中のキャッシュ内のコンテキストの数を確認します。

      このメソッドのデフォルト実装は常に 0 を返します。具体的な実装では、このメソッド、registerContextUsage(MergedContextConfiguration, Class)unregisterContextUsage(MergedContextConfiguration, Class) を適切な動作でオーバーライドすることを強くお勧めします。Spring の標準の ContextContext 実装では、これらのメソッドが適切にオーバーライドされていることに注意してください。

      導入:
      7.0
      関連事項:
    • size

      int size()
      現在キャッシュに格納されているコンテキストの数を確認します。

      キャッシュに Integer.MAX_VALUE 要素より多く含まれている場合、このメソッドは Integer.MAX_VALUE を返す必要があります。

    • getParentContextCount

      int getParentContextCount()
      キャッシュ内で現在追跡されている親コンテキストの数を判別します。
    • getHitCount

      int getHitCount()
      このキャッシュの全体的なヒット数を取得します。

      ヒットとは、クエリされたキーに対して null 以外のコンテキストを返すキャッシュへのアクセスです。

    • getMissCount

      int getMissCount()
      このキャッシュの全体的なミス数を取得します。

      ミスとは、クエリされたキーの null コンテキストを返すキャッシュへのアクセスです。

    • reset

      void reset()
      統計を含め、このキャッシュによって維持されているすべての状態をリセットします。
      関連事項:
    • clear

      void clear()
      キャッシュからすべてのコンテキストをクリアし、コンテキスト階層情報もクリアします。
    • clearStatistics

      void clearStatistics()
      キャッシュのヒットカウントミスカウントの統計をクリアします(つまり、カウンターをゼロにリセットします)。
    • logStatistics

      void logStatistics()
      "org.springframework.test.context.cache" ロギングカテゴリを使用して、この ContextCache の統計を DEBUG レベルで記録します。

      次の情報がログに記録されます。