|
对于最新稳定版本,请使用 Spring Framework 7.0.6! |
使用上下文初始化器进行上下文配置
要通过上下文初始化器为测试配置 ApplicationContext,请使用 @ContextConfiguration 注解您的测试类,并将 initializers 属性配置为一个数组,该数组包含对实现了 ApplicationContextInitializer 的类的引用。随后,所声明的上下文初始化器将用于初始化为您的测试加载的 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 | 通过使用配置类和初始化器来指定配置。 |
你也可以完全省略在 @ContextConfiguration 中声明 XML 配置文件、Groovy 脚本或组件类,而仅声明 ApplicationContextInitializer 类。这些初始化器类随后负责在应用上下文中注册 bean——例如,通过编程方式从 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 | 仅使用初始化器来指定配置。 |