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