public abstract class AbstractDelegatingSmartContextLoader extends ObjectSE implements SmartContextLoader
AbstractDelegatingSmartContextLoader は、一連の候補 SmartContextLoaders(つまり、XML 構成ファイルまたは Groovy スクリプトをサポートするものとアノテーション付きクラスをサポートするもの)に委譲して、特定のコンテキストローダーが適切であると判断する SmartContextLoader SPI の実装の抽象基本クラスとして機能します。テストクラスの設定。各候補には、@ContextConfiguration でアノテーションが付けられたテストクラス階層内の各クラスの ContextConfigurationAttributes を処理する機会が与えられ、マージされ、処理された構成をサポートする候補は、実際にコンテキストをロードするために使用されます。XML ベースのローダーへの参照は、XML 構成ファイルのみをサポートするコンテキストローダー、または XML 構成ファイルと Groovy スクリプトの両方を同時にサポートするコンテキストローダーを意味すると解釈できます。
テストクラスに空の @ContextConfiguration アノテーションを配置すると、デフォルトのリソースの場所 (XML 構成ファイルや Groovy スクリプトなど) またはデフォルトの構成クラスを検出する必要があることが通知されます。さらに、特定の ContextLoader または SmartContextLoader が @ContextConfiguration 経由で明示的に宣言されていない場合、AbstractDelegatingSmartContextLoader の具象サブクラスがデフォルトのローダーとして使用され、パスベースのリソースの場所 (XML 構成ファイルや Groovy スクリプトなど) または Groovy スクリプトのいずれかに対する自動サポートが提供されます。アノテーション付きクラスですが、両方を同時に行うことはできません。
Spring 3.2 の時点で、テストクラスはオプションでパスベースのリソースの場所もアノテーション付きクラスも宣言せず、代わりにアプリケーションコンテキスト初期化子のみを宣言できます。このような場合でも、デフォルトの検出は試行されますが、デフォルトがない場合でも例外は発生しません。
SmartContextLoader| コンストラクターと説明 |
|---|
AbstractDelegatingSmartContextLoader() |
| 修飾子と型 | メソッドと説明 |
|---|---|
protected abstract SmartContextLoader | getAnnotationConfigLoader() アノテーション付きクラスをサポートするデリゲート SmartContextLoader を取得します。 |
protected abstract SmartContextLoader | getXmlLoader()XML 構成ファイルや Groovy スクリプトをサポートするデリゲート SmartContextLoader を取得します。 |
ApplicationContext | loadContext(MergedContextConfiguration mergedConfig)ApplicationContext をロードする適切な候補 SmartContextLoader にデリゲートします。 |
ApplicationContext | loadContext(StringSE... locations)AbstractDelegatingSmartContextLoader は ContextLoader.loadContext(String...) メソッドをサポートしていません。 |
void | processContextConfiguration(ContextConfigurationAttributes configAttributes) 提供された ContextConfigurationAttributes を処理するための候補 SmartContextLoaders へのデリゲート。 |
StringSE[] | processLocations(ClassSE<?> clazz, StringSE... locations)AbstractDelegatingSmartContextLoader は ContextLoader.processLocations(Class, String...) メソッドをサポートしていません。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEprotected abstract SmartContextLoader getXmlLoader()
SmartContextLoader を取得します。protected abstract SmartContextLoader getAnnotationConfigLoader()
SmartContextLoader を取得します。public final StringSE[] processLocations(ClassSE<?> clazz, @Nullable StringSE... locations)
AbstractDelegatingSmartContextLoader は ContextLoader.processLocations(Class, String...) メソッドをサポートしていません。代わりに processContextConfiguration(ContextConfigurationAttributes) を呼び出してください。ContextLoader の processLocations clazz - ロケーションが関連付けられているクラス: 指定されたロケーションの処理方法を決定するために使用されます locations - アプリケーションコンテキストのロードに使用する未変更の場所 (null または空にすることができます)UnsupportedOperationExceptionSE - この実装 public final ApplicationContext loadContext(StringSE... locations) throws ExceptionSE
AbstractDelegatingSmartContextLoader は ContextLoader.loadContext(String...) メソッドをサポートしていません。代わりに loadContext(MergedContextConfiguration) を呼び出してください。ContextLoader の loadContext locations - アプリケーションコンテキストをロードするために使用するリソースの場所 UnsupportedOperationExceptionSE - この実装 ExceptionSE - コンテキストの読み込みに失敗した場合 public void processContextConfiguration(ContextConfigurationAttributes configAttributes)
ContextConfigurationAttributes を処理するための候補 SmartContextLoaders へのデリゲート。委譲は、XML 構成ファイルと Groovy スクリプトおよびアノテーション付きクラスのデフォルトローダーの実装に関する明確な知識に基づいています。具体的には、委譲アルゴリズムは次のとおりです。
ContextConfigurationAttributes のリソースの場所またはアノテーション付きクラスが空でない場合、適切な候補ローダーは、デフォルトの検出をチェックせずに、構成をそのまま処理できます。info メッセージがログに記録されます。info メッセージがログに記録されます。SmartContextLoader の processContextConfiguration configAttributes - 処理するコンテキスト構成属性 IllegalArgumentExceptionSE - 提供された構成属性が null の場合、または提供された構成属性にリソースの場所とアノテーション付きクラスの両方が含まれている場合 IllegalStateExceptionSE - XML ベースのローダーがデフォルトの構成クラスを検出した場合。アノテーションベースのローダーがデフォルトのリソースの場所を検出した場合。どちらの候補ローダーも、提供されたコンテキスト構成のデフォルトを検出しない場合。または、両方の候補ローダーが提供されたコンテキスト構成のデフォルトを検出した場合 public ApplicationContext loadContext(MergedContextConfiguration mergedConfig) throws ExceptionSE
ApplicationContext をロードする適切な候補 SmartContextLoader にデリゲートします。委譲は、XML 構成ファイルと Groovy スクリプトおよびアノテーション付きクラスのデフォルトローダーの実装に関する明確な知識に基づいています。具体的には、委譲アルゴリズムは次のとおりです。
MergedContextConfiguration のリソースの場所が空ではなく、アノテーション付きクラスが空の場合、XML ベースのローダーは ApplicationContext をロードします。MergedContextConfiguration のアノテーション付きクラスが空でなく、リソースの場所が空の場合、アノテーションベースのローダーは ApplicationContext をロードします。SmartContextLoader の loadContext mergedConfig - アプリケーションコンテキストをロードするために使用するマージされたコンテキスト構成 IllegalArgumentExceptionSE - 提供されたマージ構成が null の場合 IllegalStateExceptionSE - どちらの候補ローダーも、提供されたマージされたコンテキスト構成から ApplicationContext をロードできない場合 ExceptionSE - コンテキストの読み込みに失敗した場合 SmartContextLoader.processContextConfiguration(ContextConfigurationAttributes), #registerAnnotationConfigProcessors(org.springframework.beans.factory.support.BeanDefinitionRegistry), MergedContextConfiguration.getActiveProfiles(), ConfigurableApplicationContext.getEnvironment()