此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Framework 6.2.0spring-doc.cadn.net.cn

使用 Context Initializers 进行 Context Configuration

要配置ApplicationContext对于使用上下文初始值设定项的测试, 使用@ContextConfiguration并配置initializers属性,其中包含对实现ApplicationContextInitializer.然后,使用声明的上下文初始值设定项 初始化ConfigurableApplicationContext为您的测试加载。请注意, 混凝土ConfigurableApplicationContext每个声明的初始化器支持的类型 必须与ApplicationContextSmartContextLoader正在使用(通常为GenericApplicationContext).此外, 初始化器的调用顺序取决于它们是否实现 Spring 的Ordered接口或用 Spring 的@Orderannotation 或标准@Priority注解。以下示例演示如何使用初始值设定项:spring-doc.cadn.net.cn

@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类,然后负责注册 bean 在上下文中 — 例如,通过以编程方式从 XML 加载 Bean 定义 文件或配置类。以下示例显示了如何执行此作:spring-doc.cadn.net.cn

@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 仅使用初始值设定项指定配置。