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, waitSE
protected 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()