XML、Groovy スクリプト、コンポーネントクラスの混合
テスト用に ApplicationContext
を構成するには、XML 構成ファイル、Groovy スクリプト、コンポーネントクラス(通常は @Configuration
クラス)を混在させることが望ましい場合があります。例: 本番環境で XML 構成を使用する場合、@Configuration
クラスを使用して、テスト用に特定の Spring 管理コンポーネントを構成したり、その逆を行うことができます。
さらに、一部のサードパーティフレームワーク(Spring Boot など)は、異なる種類のリソース(たとえば、XML 構成ファイル、Groovy スクリプト、@Configuration
クラス)から ApplicationContext
を同時に読み込むためのファーストクラスのサポートを提供します。歴史的に、Spring Framework は標準デプロイに対してこれをサポートしていませんでした。その結果、Spring Framework が spring-test
モジュールで提供する SmartContextLoader
実装のほとんどは、各テストコンテキストに対して 1 つのリソース型のみをサポートします。ただし、これは両方を使用できないという意味ではありません。一般規則の 1 つの例外は、GenericGroovyXmlContextLoader
と GenericGroovyXmlWebContextLoader
が XML 構成ファイルと Groovy スクリプトの両方を同時にサポートすることです。さらに、サードパーティのフレームワークは、locations
と classes
から @ContextConfiguration
の両方の宣言をサポートすることを選択できます。また、TestContext フレームワークの標準テストサポートでは、次のオプションがあります。
リソースの場所(XML や Groovy など)と @Configuration
クラスを使用してテストを構成する場合は、一方をエントリポイントとして選択し、もう一方を含めるかインポートする必要があります。例: XML または Groovy スクリプトでは、コンポーネントスキャンを使用するか、通常の Spring Bean として定義することにより、@Configuration
クラスを含めることができます。一方、@Configuration
クラスでは、@ImportResource
を使用して XML 構成ファイルまたは Groovy スクリプトをインポートできます。この動作は、本番環境でアプリケーションを構成する方法と意味的に同等です。本番構成では、XML または Groovy リソースの場所のセット、または本番 ApplicationContext
がロードされる @Configuration
クラスのセットのいずれかを定義しますが、他の型の構成を含めたりインポートしたりする自由。