跳到主要内容
版本:7.0.3

上下文暂停

Hunyuan 7b 中英对照 Context Pausing

从 Spring Framework 7.0 开始,存储在上下文缓存中的 ApplicationContext(请参见 上下文缓存)在不再被 actively 使用时可以被 暂停,下次从缓存中获取该上下文时,它将自动 重启。具体来说,重启会重新启动应用程序上下文中的所有自动启动的 Bean,从而有效地恢复其生命周期状态。这确保了在上下文未被测试使用时,其中的后台进程不会处于活动运行状态。例如,JMS 监听器容器、定时任务以及上下文中实现 LifecycleSmartLifecycle 的任何其他组件,在上下文再次被测试使用之前都将处于 “停止” 状态。不过需要注意的是,SmartLifecycle 组件可以通过在 SmartLifecycle#isPauseable() 方法中返回 false 来选择不暂停。

你可以通过将 PauseMode 设置为以下支持的值之一来控制是否应暂停非活动应用程序上下文。

总是;始终

始终暂停非活动应用程序上下文。

ON_CONTEXT_SWITCH

只有当从上下文缓存中获取到的下一个上下文与当前非活动应用程序上下文不同时,才暂停该非活动应用程序上下文。

从不

从不暂停非活动应用程序上下文,这实际上会禁用上下文缓存的暂停功能。

PauseMode 的默认值为 ON_CONTEXT_SWITCH,但可以通过设置一个名为 spring.test.context.cache.pause 的 JVM 系统属性来从命令行或构建脚本中更改该值,该属性可以设置为支持的任意值(不区分大小写)。另外,您也可以通过 SpringProperties 机制来设置此属性。

例如,如果你希望非活动应用程序上下文始终处于暂停状态,你可以通过将 spring.test.context.cache.pause 系统属性设置为 always,从默认的 ON_CONTEXT_SWITCH 模式切换到 ALWAYS 模式。

-Dspring.test.context.cache.pause=always

同样,如果您遇到Lifecycle组件无法或不应该选择不暂停的问题,或者您发现由于应用程序上下文的暂停和重启,您的测试套件运行速度变慢,您可以通过将spring.test.context.cache.pause系统属性设置为never来禁用暂停功能。

-Dspring.test.context.cache.pause=never