クラス 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 スクリプトなど) またはアノテーション付きクラスのいずれかが自動的にサポートされますが、両方が同時にサポートされることはありません。
テストクラスは、必要に応じて、パスベースのリソースの場所もアノテーション付きクラスも宣言せず、代わりにアプリケーションコンテキストの初期化子のみを宣言する場合があります。このような場合でも、デフォルトを検出しようとしますが、それらがなくても例外にはなりません。
Spring Framework 6.0 の時点で、このクラスは AotContextLoader
を実装しています。候補の getXmlLoader()
および getAnnotationConfigLoader()
は、AOT サポートを提供するために AotContextLoader
も実装する必要があります。
- 導入:
- 3.2
- 作成者:
- Sam Brannen, Phillip Webb
- 関連事項:
コンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明protected abstract SmartContextLoader
アノテーション付きクラスをサポートするデリゲートSmartContextLoader
を取得します。protected abstract SmartContextLoader
XML 構成ファイルや Groovy スクリプトをサポートするデリゲートSmartContextLoader
を取得します。final ApplicationContext
loadContext
(MergedContextConfiguration mergedConfig) ApplicationContext
をロードする適切な候補SmartContextLoader
にデリゲートします。final ApplicationContext
loadContextForAotProcessing
(MergedContextConfiguration mergedConfig) AOT 処理のためにApplicationContext
をロードするために、適切な候補SmartContextLoader
に委譲します。final ApplicationContext
loadContextForAotRuntime
(MergedContextConfiguration mergedConfig, ApplicationContextInitializer<ConfigurableApplicationContext> initializer) AOT ランタイム実行のためにApplicationContext
をロードするために、適切な候補SmartContextLoader
に委譲します。void
processContextConfiguration
(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
- 関連事項: