コンテキスト初期化子を使用したコンテキスト構成

コンテキスト初期化子を使用してテスト用に ApplicationContext を構成するには、@ContextConfiguration でテストクラスにアノテーションを付け、ApplicationContextInitializer を実装するクラスへの参照を含む配列で initializers 属性を構成します。宣言されたコンテキスト初期化子は、テスト用にロードされる ConfigurableApplicationContext を初期化するために使用されます。宣言された各イニシャライザーによってサポートされる具体的な ConfigurableApplicationContext 型は、使用中の SmartContextLoader によって作成された ApplicationContext の型(通常は GenericApplicationContext)と互換性がある必要があることに注意してください。さらに、初期化子が呼び出される順序は、Spring の Ordered インターフェースを実装するか、Spring の @Order アノテーションまたは標準 @Priority アノテーションが付けられているかによって異なります。次の例は、初期化子の使用方法を示しています。

  • Java

  • Kotlin

@ExtendWith(SpringExtension.class)
// ApplicationContext will be loaded from TestConfig
// and initialized by TestAppCtxInitializer
@ContextConfiguration(
	classes = TestConfig.class,
	initializers = TestAppCtxInitializer.class) (1)
class MyTest {
	// class body...
}
1 構成クラスと初期化子を使用して構成を指定します。
@ExtendWith(SpringExtension::class)
// ApplicationContext will be loaded from TestConfig
// and initialized by TestAppCtxInitializer
@ContextConfiguration(
		classes = [TestConfig::class],
		initializers = [TestAppCtxInitializer::class]) (1)
class MyTest {
	// class body...
}
1 構成クラスと初期化子を使用して構成を指定します。

また、XML 構成ファイル、Groovy スクリプト、@ContextConfiguration のコンポーネントクラスの宣言を完全に省略し、代わりに ApplicationContextInitializer クラスのみを宣言することができます。ApplicationContextInitializer クラスは、XML ファイルから Bean 定義をプログラムでロードしたり、構成クラス。次の例は、その方法を示しています。

  • Java

  • Kotlin

@ExtendWith(SpringExtension.class)
// ApplicationContext will be initialized by EntireAppInitializer
// which presumably registers beans in the context
@ContextConfiguration(initializers = EntireAppInitializer.class) (1)
class MyTest {
	// class body...
}
1 初期化子のみを使用して構成を指定します。
@ExtendWith(SpringExtension::class)
// ApplicationContext will be initialized by EntireAppInitializer
// which presumably registers beans in the context
@ContextConfiguration(initializers = [EntireAppInitializer::class]) (1)
class MyTest {
	// class body...
}
1 初期化子のみを使用して構成を指定します。