|
对于最新的稳定版本,请使用 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 | 仅使用初始化器指定配置。 |