クラス AbstractDelegatingSmartContextLoader

java.lang.ObjectSE
org.springframework.test.context.support.AbstractDelegatingSmartContextLoader
実装されたすべてのインターフェース:
AotContextLoaderContextLoaderSmartContextLoader
既知の直属サブクラス
DelegatingSmartContextLoaderWebDelegatingSmartContextLoader

public abstract class AbstractDelegatingSmartContextLoader extends ObjectSE implements AotContextLoader
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
関連事項:
  • コンストラクターの詳細

    • AbstractDelegatingSmartContextLoader

      public AbstractDelegatingSmartContextLoader()
  • メソッドの詳細

    • getXmlLoader

      protected abstract SmartContextLoader getXmlLoader()
      XML 構成ファイルや Groovy スクリプトをサポートするデリゲート SmartContextLoader を取得します。
    • getAnnotationConfigLoader

      protected abstract SmartContextLoader getAnnotationConfigLoader()
      アノテーション付きクラスをサポートするデリゲート SmartContextLoader を取得します。
    • processContextConfiguration

      public void processContextConfiguration(ContextConfigurationAttributes configAttributes)
      提供された ContextConfigurationAttributes を処理するための候補 SmartContextLoaders へのデリゲート。

      委譲は、XML 構成ファイルと Groovy スクリプトおよびアノテーション付きクラスのデフォルトローダーの実装に関する明確な知識に基づいています。具体的には、委譲アルゴリズムは次のとおりです。

      • 提供された ContextConfigurationAttributes のリソースの場所またはアノテーション付きクラスが空でない場合、適切な候補ローダー、デフォルトの検出をチェックせずに、構成をそのまま処理できます。
      • それ以外の場合、XML ベースのローダーは、デフォルトのリソースの場所を検出するために構成を処理できます。XML ベースのローダーがデフォルトのリソースの場所を検出すると、info メッセージがログに記録されます。
      • その後、アノテーションベースのローダーは、デフォルトの構成クラスを検出するために構成を処理できます。アノテーションベースのローダーがデフォルトの構成クラスを検出すると、info メッセージがログに記録されます。
      次で指定:
      インターフェース SmartContextLoaderprocessContextConfiguration 
      パラメーター:
      configAttributes - 処理するコンテキスト構成属性
      例外:
      IllegalArgumentExceptionSE - 提供された構成属性が null の場合、または提供された構成属性にリソースの場所とアノテーション付きクラスの両方が含まれている場合
      IllegalStateExceptionSE - XML ベースのローダーがデフォルトの構成クラスを検出した場合。アノテーションベースのローダーがデフォルトのリソースの場所を検出した場合。どちらの候補ローダーも、提供されたコンテキスト構成のデフォルトを検出しない場合。または、両方の候補ローダーが提供されたコンテキスト構成のデフォルトを検出した場合
    • loadContext

      public final ApplicationContext loadContext(MergedContextConfiguration mergedConfig) throws ExceptionSE
      ApplicationContext をロードする適切な候補 SmartContextLoader にデリゲートします。

      委譲は、XML 構成ファイルと Groovy スクリプトおよびアノテーション付きクラスのデフォルトローダーの実装に関する明確な知識に基づいています。具体的には、委譲アルゴリズムは次のとおりです。

      • 提供された MergedContextConfiguration のリソースの場所が空ではなく、アノテーション付きクラスが空の場合、XML ベースのローダーは ApplicationContext をロードします。
      • 提供された MergedContextConfiguration のアノテーション付きクラスが空でなく、リソースの場所が空の場合、アノテーションベースのローダーは ApplicationContext をロードします。
      次で指定:
      インターフェース SmartContextLoaderloadContext 
      パラメーター:
      mergedConfig - アプリケーションコンテキストをロードするために使用するマージされたコンテキスト構成
      戻り値:
      新しいアプリケーションコンテキスト
      例外:
      IllegalStateExceptionSE - どちらの候補ローダーも、提供されたマージされたコンテキスト構成から ApplicationContext をロードできない場合
      ContextLoadException - コンテキストの読み込みに失敗した場合
      ExceptionSE
      関連事項:
    • loadContextForAotProcessing

      public final ApplicationContext loadContextForAotProcessing(MergedContextConfiguration mergedConfig) throws ExceptionSE
      AOT 処理のために ApplicationContext をロードするために、適切な候補 SmartContextLoader に委譲します。

      委譲は、デフォルトローダーの実装に関する明示的な知識に基づいています。詳細については、loadContext(MergedContextConfiguration) を参照してください。

      次で指定:
      インターフェース AotContextLoaderloadContextForAotProcessing 
      パラメーター:
      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) を参照してください。

      次で指定:
      インターフェース AotContextLoaderloadContextForAotRuntime 
      パラメーター:
      mergedConfig - アプリケーションコンテキストをロードするために使用するマージされたコンテキスト構成
      initializer - Bean 定義を再作成するためにコンテキストに適用する必要がある ApplicationContextInitializer 
      戻り値:
      新しいアプリケーションコンテキスト
      例外:
      IllegalStateExceptionSE - どちらの候補ローダーも、提供されたマージされたコンテキスト構成から ApplicationContext をロードできない場合
      ContextLoadException - コンテキストの読み込みに失敗した場合
      ExceptionSE
      導入:
      6.0
      関連事項: