インターフェース SmartContextLoader
- すべてのスーパーインターフェース:
- ContextLoader
- すべての既知のサブインターフェース:
- AotContextLoader
- すべての既知の実装クラス:
- AbstractContextLoader、- AbstractDelegatingSmartContextLoader、- AbstractGenericContextLoader、- AbstractGenericWebContextLoader、- AnnotationConfigContextLoader、- AnnotationConfigWebContextLoader、- DelegatingSmartContextLoader、- GenericGroovyXmlContextLoader、- GenericGroovyXmlWebContextLoader、- GenericXmlContextLoader、- GenericXmlWebContextLoader、- WebDelegatingSmartContextLoader
ApplicationContext をロードするための戦略インターフェース。SmartContextLoader SPI は、Spring 2.5 で導入された ContextLoader SPI に代わるものです。SmartContextLoader は、リソースの場所、コンポーネントクラス、または両方の組み合わせを処理することを選択できます。さらに、SmartContextLoader は、提供された MergedContextConfiguration で使用可能なプロパティに基づいてロードするコンテキストを構成できます。例: アクティブな Bean 定義プロファイルは、MergedContextConfiguration.getActiveProfiles() に基づいてコンテキストに対して設定できます。
 コンポーネントクラスの定義については、@ContextConfiguration の Javadoc を参照してください。
SmartContextLoader のクライアントは、loadContext() を呼び出す前に processContextConfiguration() を呼び出す必要があります。これにより、SmartContextLoader は、リソースの場所を変更したり、デフォルトのリソースの場所やデフォルトの構成クラスを検出したりするためのカスタムサポートを提供する機会が与えられます。processContextConfiguration() の結果は、ルートテストクラスの階層内のすべてのクラスについてマージされ、loadContext() に提供されます。
NOTE: Spring Framework 6.0 の時点で、SmartContextLoader は ContextLoader SPI で定義されたメソッドをサポートしなくなりました。
 具体的な実装では、public の引数なしのコンストラクターを提供する必要があります。
Spring は、次の SmartContextLoader 実装を提供します。
- 導入:
- 3.1
- 作成者:
- Sam Brannen
- 関連事項:
- メソッドのサマリー修飾子と型メソッド説明- default ApplicationContext- loadContext- (StringSE... locations) - SmartContextLoaderは非推奨の- ContextLoaderメソッドをサポートしていません。- loadContext- (MergedContextConfiguration mergedConfig) 提供された- MergedContextConfigurationに基づいて新しい- ApplicationContextをロードし、コンテキストを構成して、完全にリフレッシュされた状態でコンテキストを返します。- void- processContextConfiguration- (ContextConfigurationAttributes configAttributes) 特定のテストクラスの- ContextConfigurationAttributesを処理します。- default StringSE[]- processLocations- (ClassSE<?> clazz, StringSE... locations) - SmartContextLoaderは非推奨の- ContextLoaderメソッドをサポートしていません。
- メソッドの詳細- processContextConfiguration特定のテストクラスの- ContextConfigurationAttributesを処理します。- 具体的な実装では、提供された - ContextConfigurationAttributesの- locationsまたは- classesを変更したり、デフォルトの構成場所を生成したり、提供された値が- nullまたは空の場合にデフォルトの構成クラスを検出したりすることを選択できます。- 注 : - SmartContextLoaderは、提供された- ContextConfigurationAttributesで対応する- locationsまたは- classesプロパティを設定する前に、生成または検出されたデフォルトが実際に存在することをプリエンプティブに検証する必要があります。- locationsまたは- classesプロパティを空のままにしておくと、この- SmartContextLoaderがデフォルトを生成または検出できなかったことを示します。- パラメーター:
- configAttributes- 処理するコンテキスト構成属性
 
- loadContext提供された- MergedContextConfigurationに基づいて新しい- ApplicationContextをロードし、コンテキストを構成して、完全にリフレッシュされた状態でコンテキストを返します。- 具体的な実装では、この - SmartContextLoaderによってロードされた- application contextsの Bean ファクトリにアノテーション構成プロセッサーを登録する必要があります。Bean は自動的に- @Autowired、- @ResourceEE、- @InjectEE を使用したアノテーションベースの依存性注入の候補になります。さらに、具体的な実装では、次のアクションを実行する必要があります。- 必要に応じて、親 ApplicationContextを設定します (MergedContextConfiguration.getParent()を参照)。
-  アクティブな Bean 定義プロファイルをコンテキストの Environmentに設定します (MergedContextConfiguration.getActiveProfiles()を参照)。
-  テスト PropertySourcesをEnvironmentに追加します (MergedContextConfiguration.getPropertySourceLocations()、MergedContextConfiguration.getPropertySourceProperties()、TestPropertySourceUtilsを参照)。
- ApplicationContextInitializersを呼び出します (- MergedContextConfiguration.getContextInitializerClasses()を参照)。
- ContextCustomizersを呼び出します (- MergedContextConfiguration.getContextCustomizers()を参照)。
- ApplicationContextの JVM シャットダウンフックを登録します。コンテキストが早期に閉じられない限り、JVM のシャットダウン時にすべてのコンテキストインスタンスが自動的に閉じられます。これにより、コンテキスト内で Bean が保持する外部リソースを解放できます。— たとえば、一時ファイルです。
 - Spring Framework 6.0 の時点で、 - ApplicationContextをロードしようとしたときにスローされた例外はすべて- ContextLoadExceptionでラップする必要があります。具体的な実装には、次のような try-catch ブロックを含める必要があります。- ApplicationContext context = // create context try { // configure and refresh context } catch (Exception ex) { throw new ContextLoadException(context, ex); }- パラメーター:
- mergedConfig- アプリケーションコンテキストをロードするために使用するマージされたコンテキスト構成
- 戻り値:
- 新しいアプリケーションコンテキスト
- 例外:
- ContextLoadException- コンテキストの読み込みに失敗した場合
- ExceptionSE
- 関連事項:
 
- 必要に応じて、親 
- processLocations- SmartContextLoaderは非推奨の- ContextLoaderメソッドをサポートしていません。代わりに- processContextConfiguration(ContextConfigurationAttributes)を呼び出してください。- 次で指定:
-  インターフェース ContextLoaderのprocessLocations
- パラメーター:
- clazz- ロケーションが関連付けられているクラス: 指定されたロケーションの処理方法を決定するために使用されます
- locations- アプリケーションコンテキストのロードに使用する未変更の場所 (- nullまたは空にすることができます)
- 戻り値:
- アプリケーションコンテキストリソースの場所の配列
- 例外:
- UnsupportedOperationExceptionSE- この実装
- 導入:
- 6.0
 
- loadContext- SmartContextLoaderは非推奨の- ContextLoaderメソッドをサポートしていません。- 代わりに - loadContext(MergedContextConfiguration)を呼び出してください。- 次で指定:
-  インターフェース ContextLoaderのloadContext
- パラメーター:
- locations- アプリケーションコンテキストをロードするために使用するリソースの場所
- 戻り値:
- 新しいアプリケーションコンテキスト
- 例外:
- UnsupportedOperationExceptionSE- この実装
- ExceptionSE- コンテキストの読み込みに失敗した場合
- 導入:
- 6.0