此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Framework 6.2.0! |
使用上下文定制器进行配置配置
一个ContextCustomizer
负责定制提供的ConfigurableApplicationContext
在 Bean 定义被加载到上下文中之后
但在刷新上下文之前。
一个ContextCustomizerFactory
负责创建一个ContextCustomizer
基于
一些自定义逻辑,用于确定ContextCustomizer
对于给定的
test 类 — 例如,基于某个 annotation 的存在。工厂是
在ContextLoaders
已处理测试的上下文配置属性
类,但在MergedContextConfiguration
已创建。
例如,Spring Framework 提供了以下内容ContextCustomizerFactory
implementation 中,默认情况下已注册:
MockServerContainerContextCustomizerFactory
-
创建一个
MockServerContainerContextCustomizer
如果 Classpath 中存在 WebSocket 支持 并且测试类或其封闭类之一带有@WebAppConfiguration
.MockServerContainerContextCustomizer
实例化一个新的MockServerContainer
并将其存储在ServletContext
在名为jakarta.websocket.server.ServerContainer
.
注册ContextCustomizerFactory
实现
您可以注册ContextCustomizerFactory
implementation 的
子类及其嵌套类。@ContextCustomizerFactories
注解。请参阅注释支持和 javadoc 以获取@ContextCustomizerFactories
了解详细信息和示例。
自动发现默认ContextCustomizerFactory
实现
注册ContextCustomizerFactory
使用@ContextCustomizerFactories
是
适用于在有限测试场景中使用的自定义工厂。但是,它可以
如果需要在整个测试套件中使用自定义工厂,则会变得很麻烦。这
此问题已通过支持自动发现默认得到解决ContextCustomizerFactory
通过SpringFactoriesLoader
机制。
例如,构成 Spring Framework 和 Spring 中 testing 支持的模块
引导声明所有核心默认值ContextCustomizerFactory
implementation 在org.springframework.test.context.ContextCustomizerFactory
键META-INF/spring.factories
properties 文件。这spring.factories
文件spring-test
模块可以在这里查看。
第三方框架和开发人员可以贡献自己的框架ContextCustomizerFactory
实现以相同的方式添加到默认工厂列表中spring.factories
文件。
合并ContextCustomizerFactory
实现
如果自定义ContextCustomizerFactory
通过@ContextCustomizerFactories
它
将与使用上述自动发现机制注册的默认工厂合并。
合并算法可确保从列表中删除重复项,并且在本地 合并时,声明的工厂将附加到默认工厂列表中。
替换测试类、其子类及其嵌套的默认工厂
类,您可以设置 |