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 クラスのセットのいずれかを定義しますが、他の型の構成を含めたりインポートしたりする自由。