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, processLocations
void 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
、@Resource
SE、@Inject
EE を使用したアノテーションベースの依存性注入の候補になります。さらに、具体的な実装では、アクティブな Bean 定義プロファイルをコンテキストの Environment
に設定する必要があります。
SmartContextLoader
によってロードされた ApplicationContext
は、それ自体の JVM シャットダウンフックを登録する必要があります。コンテキストが早く閉じられない限り、すべてのコンテキストインスタンスは JVM のシャットダウン時に自動的に閉じられます。これにより、コンテキスト内の Bean が保持する外部リソース(一時ファイルなど)を解放できます。
mergedConfig
- アプリケーションコンテキストをロードするために使用するマージされたコンテキスト構成 ExceptionSE
- コンテキストの読み込みに失敗した場合 processContextConfiguration(ContextConfigurationAttributes)
, #registerAnnotationConfigProcessors(org.springframework.beans.factory.support.BeanDefinitionRegistry)
, MergedContextConfiguration.getActiveProfiles()
, ConfigurableApplicationContext.getEnvironment()