インターフェース 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
、@Resource
EE、@Inject
EE を使用したアノテーションベースの依存性注入の候補になります。さらに、具体的な実装では、次のアクションを実行する必要があります。- 必要に応じて、親
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