インターフェース ContextCache
- すべての既知の実装クラス:
DefaultContextCache
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
- 関連事項:
ネストされたクラスの概要
ネストされたクラス修飾子と型インターフェース説明static interfaceApplicationContextをロードする関数を表します。static enumContextCacheに保存されている非アクティブなアプリケーションコンテキストを一時停止するかどうかを指定するモードの列挙。フィールド概要
フィールド修飾子と型フィールド説明static final StringSEContextCache統計のレポートに使用されるロギングカテゴリの名前。static final StringSEContextCacheに保存されている非アクティブなアプリケーションコンテキストを一時停止するかどうかを構成するために使用されるシステムプロパティ: "spring.test.context.cache.pause"。static final intコンテキストキャッシュのデフォルトの最大サイズ: 32。static final StringSEContextCacheの最大サイズを正の整数として構成するために使用されるシステムプロパティ: "spring.test.context.cache.maxSize"。方法の概要
修飾子と型メソッド説明voidclear()キャッシュからすべてのコンテキストをクリアし、コンテキスト階層情報もクリアします。voidboolean指定されたキーのキャッシュされたコンテキストがあるかどうかを確認します。指定されたキーのキャッシュされたApplicationContextを取得します。default int現在使用中のキャッシュ内のコンテキストの数を確認します。default int指定されたキーの失敗回数を取得します。intこのキャッシュの全体的なヒット数を取得します。intこのキャッシュの全体的なミス数を取得します。intキャッシュ内で現在追跡されている親コンテキストの数を判別します。default void指定されたキーの失敗回数を増やします。voidvoidput(MergedContextConfiguration key, ApplicationContext context) 使用すべきではありません。default ApplicationContextput(MergedContextConfiguration key, ContextCache.LoadFunction loadFunction) 指定されたキーのキャッシュにApplicationContextを明示的に追加し、カスタム削除ポリシーを尊重する可能性があります。default voidregisterContextUsage(MergedContextConfiguration key, ClassSE<?> testClass) 提供されたMergedContextConfigurationとその親のいずれかに対してApplicationContextの使用を登録します。voidremove(MergedContextConfiguration key, @Nullable DirtiesContext.HierarchyMode hierarchyMode) 指定されたキーを持つコンテキストをキャッシュから削除し、ConfigurableApplicationContextのインスタンスである場合は明示的に閉じます。voidreset()統計を含め、このキャッシュによって維持されているすべての状態をリセットします。intsize()現在キャッシュに格納されているコンテキストの数を確認します。default voidunregisterContextUsage(MergedContextConfiguration key, ClassSE<?> testClass) 指定されたMergedContextConfigurationとその親のApplicationContextの使用を登録解除します。
フィールドの詳細
CONTEXT_CACHE_LOGGING_CATEGORY
DEFAULT_MAX_CONTEXT_CACHE_SIZE
static final int DEFAULT_MAX_CONTEXT_CACHE_SIZEコンテキストキャッシュのデフォルトの最大サイズ: 32。- 導入:
- 4.3
- 関連事項:
MAX_CONTEXT_CACHE_SIZE_PROPERTY_NAME
ContextCacheの最大サイズを正の整数として構成するために使用されるシステムプロパティ: "spring.test.context.cache.maxSize"。あるいは、
SpringPropertiesメカニズムを介して構成することもできます。ContextCacheの実装は、最大キャッシュサイズを実際にサポートする必要はないことに注意してください。詳細については、対応する実装のドキュメントを参照してください。- 導入:
- 4.3
- 関連事項:
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
指定されたキーのキャッシュされたコンテキストがあるかどうかを確認します。- パラメーター:
key- コンテキストキー。null- 戻り値:
true(キャッシュに指定されたキーのコンテキストが含まれている場合)
get
指定されたキーのキャッシュされたApplicationContextを取得します。キャッシュされたアプリケーションコンテキストが以前に一時停止されていた場合は、再起動する必要があります。これは親コンテキストにも適用されます。
- パラメーター:
key- コンテキストキー。null- 戻り値:
- 対応する
ApplicationContextインスタンス、またはキャッシュに見つからない場合はnull - 関連事項:
put
使用すべきではありません。Spring Framework 7.0 からput(MergedContextConfiguration, LoadFunction)を推奨指定されたキーのキャッシュにApplicationContextを明示的に追加し、カスタム削除ポリシーを尊重する可能性があります。- パラメーター:
key- コンテキストキー。nullcontext-ApplicationContext。nullではない- 関連事項:
put
default ApplicationContext put(MergedContextConfiguration key, ContextCache.LoadFunction loadFunction) 指定されたキーのキャッシュにApplicationContextを明示的に追加し、カスタム削除ポリシーを尊重する可能性があります。提供された
ContextCache.LoadFunctionが呼び出され、ApplicationContextがロードされます。カスタムの削除ポリシーを尊重する具体的な実装では、提供された
LoadFunctionを介して新しいコンテキストがロードされる前に、削除されたコンテキストがキャッシュから削除され、閉じられるように、このメソッドをオーバーライドする必要があります。- パラメーター:
key- コンテキストキー。nullloadFunction- 指定されたキーのコンテキストをロードする関数。nullではありません- 戻り値:
ApplicationContext。nullではない- 導入:
- 7.0
- 関連事項:
remove
指定されたキーを持つコンテキストをキャッシュから削除し、ConfigurableApplicationContextのインスタンスである場合は明示的に閉じます。一般的に、このメソッドは、コンテキストをキャッシュから適切に削除するため (たとえば、カスタム削除ポリシーのため)、シングルトン Bean の状態が変更され、コンテキストとの将来の対話に影響を与える可能性がある場合に呼び出す必要があります。
さらに、提供された
HierarchyModeのセマンティクスを尊重する必要があります。詳細については、DirtiesContext.HierarchyModeの Javadoc を参照してください。- パラメーター:
key- コンテキストキー。nullhierarchyMode- 階層モード。コンテキストが階層の一部ではない場合、nullである可能性があります
getFailureCount
指定されたキーの失敗回数を取得します。失敗とは、指定されたキーの
ApplicationContextをロードしようとして例外が発生することです。このメソッドのデフォルト実装は常に
0を返します。具体的な実装では、このメソッドとincrementFailureCount(MergedContextConfiguration)を適切な動作でオーバーライドすることを強くお勧めします。Spring の標準ContextContext実装は、これらのメソッドを適切にオーバーライドすることに注意してください。- パラメーター:
key- コンテキストキー。null- 導入:
- 6.1
- 関連事項:
incrementFailureCount
指定されたキーの失敗回数を増やします。このメソッドのデフォルトの実装では何も行われません。具体的な実装では、このメソッドと
getFailureCount(MergedContextConfiguration)を適切な動作でオーバーライドすることを強くお勧めします。Spring の標準ContextContext実装は、これらのメソッドを適切にオーバーライドすることに注意してください。- パラメーター:
key- コンテキストキー。null- 導入:
- 6.1
- 関連事項:
registerContextUsage
提供されたMergedContextConfigurationとその親のいずれかに対してApplicationContextの使用を登録します。このメソッドのデフォルト実装は何も行いません。具体的な実装では、このメソッド、
unregisterContextUsage(MergedContextConfiguration, Class)、getContextUsageCount()を適切な動作でオーバーライドすることを強くお勧めします。Spring の標準ContextContext実装では、これらのメソッドが適切にオーバーライドされていることに注意してください。- パラメーター:
key- コンテキストキー。nulltestClass- アプリケーションコンテキストを使用しているテストクラス- 導入:
- 7.0
- 関連事項:
unregisterContextUsage
指定されたMergedContextConfigurationとその親のApplicationContextの使用を登録解除します。他のテストクラスが同じアプリケーションコンテキストをアクティブに使用していない場合、構成された
ContextCache.PauseModeに従ってアプリケーションコンテキストを一時停止する必要があります。このメソッドのデフォルト実装は何も行いません。具体的な実装では、このメソッド、
registerContextUsage(MergedContextConfiguration, Class)、getContextUsageCount()を適切な動作でオーバーライドすることを強くお勧めします。Spring の標準ContextContext実装では、これらのメソッドが適切にオーバーライドされていることに注意してください。- パラメーター:
key- コンテキストキー。nulltestClass- アプリケーションコンテキストを使用しなくなったテストクラス- 導入:
- 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
logStatistics
void logStatistics()"org.springframework.test.context.cache" ロギングカテゴリを使用して、このContextCacheの統計をDEBUGレベルで記録します。次の情報がログに記録されます。
- 具体的な
ContextCache実装の名前 - size()
- コンテキスト使用回数
- 親コンテキスト数
- ヒットカウント
- ミスカウント
- このキャッシュの状態を監視するのに役立つその他の情報
- 具体的な
put(MergedContextConfiguration, LoadFunction)を推奨