此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Framework 6.2.10! |
使用上下文初始值设定项进行上下文配置
要配置ApplicationContext
对于使用上下文初始值设定项进行的测试,
使用@ContextConfiguration
并配置initializers
属性,其中包含对实现的类的引用ApplicationContextInitializer
.然后,声明的上下文初始值设定项用于
初始化ConfigurableApplicationContext
为测试加载的。请注意
具体ConfigurableApplicationContext
每个声明的初始值设定项支持的类型
必须与ApplicationContext
由SmartContextLoader
使用中(通常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
类,然后负责注册 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 | 仅使用初始值设定项指定配置。 |