クラス AbstractDelegatingSmartContextLoader
- 実装されているすべてのインターフェース:
AotContextLoader、ContextLoader、SmartContextLoader
AbstractDelegatingSmartContextLoader は、一連の候補 SmartContextLoaders (つまり、XML 構成ファイルまたは Groovy スクリプトをサポートするもの、およびアノテーション付きクラスをサポートするもの) に委譲して、特定のテストクラスの構成に適したコンテキストローダーを決定する SmartContextLoader SPI の実装の抽象基本クラスとして機能します。各候補には、テストクラス階層内の各クラスと、@ContextConfiguration でアノテーションが付けられた包含クラス階層の ContextConfigurationAttributes を処理する機会が与えられ、マージされ処理された構成をサポートする候補が、実際にコンテキストをロードするために使用されます。XML ベースのローダーへの参照は、XML 構成ファイルのみをサポートするコンテキストローダー、または XML 構成ファイルと Groovy スクリプトの両方を同時にサポートするコンテキストローダーを意味すると解釈できます。
テストクラスに空の @ContextConfiguration アノテーションを配置すると、デフォルトのリソースの場所 (XML 構成ファイルや Groovy スクリプトなど) またはデフォルトの構成クラスを検出する必要があることが通知されます。さらに、特定の ContextLoader または SmartContextLoader が @ContextConfiguration 経由で明示的に宣言されていない場合、AbstractDelegatingSmartContextLoader の具象サブクラスがデフォルトのローダーとして使用され、パスベースのリソースの場所 (XML 構成ファイルや Groovy スクリプトなど) または Groovy スクリプトのいずれかに対する自動サポートが提供されます。アノテーション付きクラスですが、両方を同時に行うことはできません。
テストクラスは、必要に応じて、パスベースのリソースの場所もアノテーション付きクラスも宣言せず、代わりにアプリケーションコンテキストの初期化子のみを宣言する場合があります。このような場合でも、デフォルトを検出しようとしますが、それらがなくても例外にはなりません。
Spring Framework 6.0 の時点で、このクラスは AotContextLoader を実装しています。候補の getXmlLoader() および getAnnotationConfigLoader() は、AOT サポートを提供するために AotContextLoader も実装する必要があります。
- 導入:
- 3.2
- 作成者:
- Sam Brannen, Phillip Webb
- 関連事項:
コンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明protected abstract SmartContextLoaderアノテーション付きクラスをサポートするデリゲートSmartContextLoaderを取得します。protected abstract SmartContextLoaderXML 構成ファイルや Groovy スクリプトをサポートするデリゲートSmartContextLoaderを取得します。final ApplicationContextloadContext(MergedContextConfiguration mergedConfig) ApplicationContextをロードする適切な候補SmartContextLoaderにデリゲートします。final ApplicationContextloadContextForAotProcessing(MergedContextConfiguration mergedConfig) AOT 処理のためにApplicationContextをロードするために、適切な候補SmartContextLoaderに委譲します。final ApplicationContextloadContextForAotRuntime(MergedContextConfiguration mergedConfig, ApplicationContextInitializer<ConfigurableApplicationContext> initializer) AOT ランタイム実行のためにApplicationContextをロードするために、適切な候補SmartContextLoaderに委譲します。voidprocessContextConfiguration(ContextConfigurationAttributes configAttributes) 提供されたContextConfigurationAttributesを処理するための候補SmartContextLoadersへのデリゲート。クラス java.lang.ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSEインターフェース org.springframework.test.context.SmartContextLoader から継承されたメソッド
loadContext, processLocations
コンストラクターの詳細
AbstractDelegatingSmartContextLoader
public AbstractDelegatingSmartContextLoader()
メソッドの詳細
getXmlLoader
XML 構成ファイルや Groovy スクリプトをサポートするデリゲートSmartContextLoaderを取得します。getAnnotationConfigLoader
アノテーション付きクラスをサポートするデリゲートSmartContextLoaderを取得します。processContextConfiguration
提供されたContextConfigurationAttributesを処理するための候補SmartContextLoadersへのデリゲート。委譲は、XML 構成ファイルと Groovy スクリプトおよびアノテーション付きクラスのデフォルトローダーの実装に関する明確な知識に基づいています。具体的には、委譲アルゴリズムは次のとおりです。
- 提供された
ContextConfigurationAttributesのリソースの場所またはアノテーション付きクラスが空でない場合、適切な候補ローダーは、デフォルトの検出をチェックせずに、構成をそのまま処理できます。 - それ以外の場合、XML ベースのローダーは、デフォルトのリソースの場所を検出するために構成を処理できます。XML ベースのローダーがデフォルトのリソースの場所を検出すると、
infoメッセージがログに記録されます。 - その後、アノテーションベースのローダーは、デフォルトの構成クラスを検出するために構成を処理できます。アノテーションベースのローダーがデフォルトの構成クラスを検出すると、
infoメッセージがログに記録されます。
- 次で指定:
- インターフェース
SmartContextLoaderのprocessContextConfiguration - パラメーター:
configAttributes- 処理するコンテキスト構成属性- 例外:
IllegalArgumentExceptionSE- 提供された構成属性がnullの場合、または提供された構成属性にリソースの場所とアノテーション付きクラスの両方が含まれている場合IllegalStateExceptionSE- XML ベースのローダーがデフォルトの構成クラスを検出した場合。アノテーションベースのローダーがデフォルトのリソースの場所を検出した場合。どちらの候補ローダーも、提供されたコンテキスト構成のデフォルトを検出しない場合。または、両方の候補ローダーが提供されたコンテキスト構成のデフォルトを検出した場合
- 提供された
loadContext
public final ApplicationContext loadContext(MergedContextConfiguration mergedConfig) throws ExceptionSE ApplicationContextをロードする適切な候補SmartContextLoaderにデリゲートします。委譲は、XML 構成ファイルと Groovy スクリプトおよびアノテーション付きクラスのデフォルトローダーの実装に関する明確な知識に基づいています。具体的には、委譲アルゴリズムは次のとおりです。
- 提供された
MergedContextConfigurationのリソースの場所が空ではなく、アノテーション付きクラスが空の場合、XML ベースのローダーはApplicationContextをロードします。 - 提供された
MergedContextConfigurationのアノテーション付きクラスが空でなく、リソースの場所が空の場合、アノテーションベースのローダーはApplicationContextをロードします。
- 次で指定:
- インターフェース
SmartContextLoaderのloadContext - パラメーター:
mergedConfig- アプリケーションコンテキストをロードするために使用するマージされたコンテキスト構成- 戻り値:
- 新しいアプリケーションコンテキスト
- 例外:
IllegalStateExceptionSE- どちらの候補ローダーも、提供されたマージされたコンテキスト構成からApplicationContextをロードできない場合ContextLoadException- コンテキストの読み込みに失敗した場合ExceptionSE- 関連事項:
- 提供された
loadContextForAotProcessing
public final ApplicationContext loadContextForAotProcessing(MergedContextConfiguration mergedConfig) throws ExceptionSE AOT 処理のためにApplicationContextをロードするために、適切な候補SmartContextLoaderに委譲します。委譲は、デフォルトローダーの実装に関する明示的な知識に基づいています。詳細については、
loadContext(MergedContextConfiguration)を参照してください。- 次で指定:
- インターフェース
AotContextLoaderのloadContextForAotProcessing - パラメーター:
mergedConfig- アプリケーションコンテキストをロードするために使用するマージされたコンテキスト構成- 戻り値:
- 新しいアプリケーションコンテキスト
- 例外:
IllegalArgumentExceptionSE- 提供されたマージ構成がnullの場合IllegalStateExceptionSE- どちらの候補ローダーも、提供されたマージされたコンテキスト構成からApplicationContextをロードできない場合ContextLoadException- コンテキストの読み込みに失敗した場合ExceptionSE- 導入:
- 6.0
- 関連事項:
loadContextForAotRuntime
public final ApplicationContext loadContextForAotRuntime(MergedContextConfiguration mergedConfig, ApplicationContextInitializer<ConfigurableApplicationContext> initializer) throws ExceptionSE AOT ランタイム実行のためにApplicationContextをロードするために、適切な候補SmartContextLoaderに委譲します。委譲は、デフォルトローダーの実装に関する明示的な知識に基づいています。詳細については、
loadContext(MergedContextConfiguration)を参照してください。- 次で指定:
- インターフェース
AotContextLoaderのloadContextForAotRuntime - パラメーター:
mergedConfig- アプリケーションコンテキストをロードするために使用するマージされたコンテキスト構成initializer- Bean 定義を再作成するためにコンテキストに適用する必要があるApplicationContextInitializer- 戻り値:
- 新しいアプリケーションコンテキスト
- 例外:
IllegalStateExceptionSE- どちらの候補ローダーも、提供されたマージされたコンテキスト構成からApplicationContextをロードできない場合ContextLoadException- コンテキストの読み込みに失敗した場合ExceptionSE- 導入:
- 6.0
- 関連事項: