gpt4 book ai didi

spring-mvc - 如何在 spring MVC 应用程序中的真实请求之外激活请求范围?

转载 作者:行者123 更新时间:2023-12-05 05:28:28 26 4
gpt4 key购买 nike

我有一个 spring mvc 应用程序,它大量使用定义在请求范围。现在我必须在这个范围之外使用这个应用程序的一部分(在Magnolia CMS 中的 qwertz 作业)。这当然行不通:

Error creating bean with name 'requestHelper': Scope 'request' is not active for the current thread

我无法更改 bean 的范围,也无法更改代码。所以我唯一的可能似乎将当前线程的范围更改为请求范围模型。

我试过类似的东西

XmlWebApplicationContext context = (XmlWebApplicationContext) ApplicationContextProvider.getApplicationContext() ;
MockServletContext mockServletContext = new MockServletContext("/");
context.setServletContext(mockServletContext);
context.refresh();

但这仍然没有激活当前线程中的请求范围。我怎样才能实现 这个?

最佳答案

可以按如下方式激活请求范围:

RequestContextHolder.setRequestAttributes(
new ServletRequestAttributes(new MockHttpServletRequest()));

...

((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
.requestCompleted();
RequestContextHolder.resetRequestAttributes();

虽然我认为在生产代码中使用这样的 hack 并不是一个好主意。

关于spring-mvc - 如何在 spring MVC 应用程序中的真实请求之外激活请求范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10244431/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com