public interface SmartContextLoader extends ContextLoader
application context をロードするための戦略インターフェース。SmartContextLoader SPI は、Spring 2.5 で導入された ContextLoader SPI に取って代わります。SmartContextLoader は、リソースの場所またはアノテーション付きクラスのいずれかを処理することを選択できます。さらに、SmartContextLoader は、ロードするコンテキストでアクティブな Bean 定義プロファイルを設定できます(MergedContextConfiguration.getActiveProfiles() および loadContext(MergedContextConfiguration) を参照)。
アノテーション付きクラスの定義については、@ContextConfiguration の Javadoc を参照してください。
SmartContextLoader のクライアントは、loadContext() を呼び出す前に processContextConfiguration() を呼び出す必要があります。これにより、SmartContextLoader は、リソースの場所を変更したり、デフォルトのリソースの場所やデフォルトの構成クラスを検出したりするためのカスタムサポートを提供する機会が与えられます。processContextConfiguration() の結果は、ルートテストクラスの階層内のすべてのクラスについてマージされ、loadContext() に提供されます。
SmartContextLoader は ContextLoader を継承しますが、特に SmartContextLoader が ContextLoader SPI で定義されたメソッドをサポートしないことを選択する可能性があるため、クライアントは ContextLoader で定義されたメソッドより SmartContextLoader -specific メソッドを優先する必要があります。
具体的な実装では、public の引数なしのコンストラクターを提供する必要があります。
Spring は、以下の標準実装を提供します。
ContextConfiguration, ActiveProfiles, ContextConfigurationAttributes, MergedContextConfiguration| 修飾子と型 | メソッドと説明 |
|---|---|
ApplicationContext | loadContext(MergedContextConfiguration mergedConfig) 指定された merged context configuration に基づいて新しい context をロードし、コンテキストを構成して、最後に完全にリフレッシュされた状態でコンテキストを返します。 |
void | processContextConfiguration(ContextConfigurationAttributes configAttributes) 指定されたテストクラスの ContextConfigurationAttributes を処理します。 |
loadContext, processLocationsvoid processContextConfiguration(ContextConfigurationAttributes configAttributes)
ContextConfigurationAttributes を処理します。 具体的な実装では、提供された ContextConfigurationAttributes の locations または classes を変更するか、デフォルトの構成場所を生成するか、指定された値が null または空の場合にデフォルトの構成クラスを検出することができます。
注 : 標準の ContextLoader とは異なり、SmartContextLoader は、生成または検出されたデフォルトが実際に存在することを事前に確認してから、提供された ContextConfigurationAttributes で対応する locations または classes プロパティを設定する必要があります。その結果、locations または classes プロパティを空のままにすると、この SmartContextLoader がデフォルトを生成または検出できなかったことを示します。
configAttributes - 処理するコンテキスト構成属性 ApplicationContext loadContext(MergedContextConfiguration mergedConfig) throws ExceptionSE
merged context configuration に基づいて新しい context をロードし、コンテキストを構成して、最後に完全にリフレッシュされた状態でコンテキストを返します。 具体的な実装では、この SmartContextLoader によってロードされた application contexts の Bean ファクトリにアノテーション構成プロセッサーを登録する必要があります。Bean は、@Autowired、@ResourceSE、@InjectEE を使用したアノテーションベースの依存性注入の候補になります。さらに、具体的な実装では、アクティブな Bean 定義プロファイルをコンテキストの Environment に設定する必要があります。
SmartContextLoader によってロードされた ApplicationContext は、それ自体の JVM シャットダウンフックを登録する必要があります。コンテキストが早く閉じられない限り、すべてのコンテキストインスタンスは JVM のシャットダウン時に自動的に閉じられます。これにより、コンテキスト内の Bean が保持する外部リソース(一時ファイルなど)を解放できます。
mergedConfig - アプリケーションコンテキストをロードするために使用するマージされたコンテキスト構成 ExceptionSE - コンテキストの読み込みに失敗した場合 processContextConfiguration(ContextConfigurationAttributes), #registerAnnotationConfigProcessors(org.springframework.beans.factory.support.BeanDefinitionRegistry), MergedContextConfiguration.getActiveProfiles(), ConfigurableApplicationContext.getEnvironment()