インターフェース 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 ApplicationContextloadContext(StringSE... locations) SmartContextLoaderは非推奨のContextLoaderメソッドをサポートしていません。loadContext(MergedContextConfiguration mergedConfig) 提供されたMergedContextConfigurationに基づいて新しいApplicationContextをロードし、コンテキストを構成して、完全にリフレッシュされた状態でコンテキストを返します。voidprocessContextConfiguration(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