gpt4 book ai didi

java - 返回响应后,RequestContextHolder 中设置的属性丢失

转载 作者:行者123 更新时间:2023-12-01 08:56:04 25 4
gpt4 key购买 nike

我在 SpringBoot 中公开了一个服务,并且在 RequestContextHolder 中存储了一些属性。在我的一个 API 中,我必须异步执行一些 Activity 。应用程序接受请求并创建一个新线程来执行该 Activity ,并立即返回响应。我也将 RequestContextHolder 对象传递给线程。线程尝试从 RequestContextHolder 获取属性,在发送响应后它看起来像是 null。如果我在线程完成执行后返回响应,则该值在线程中可用。我假设 RequestContextHolder 与 HTTPRequest 绑定(bind)在一起,并且在返回响应时它会丢失。我的假设正确吗?如果是这样,我该如何处理这种情况?

org.springframework.web.context.request.RequestContextHolder

最佳答案

在 Spring Boot 应用程序中,RequestContextFilter 将请求设置为 RequestContextHolder,在其中将其存储为线程局部变量,并在 Controller 返回后清除它。使用 RequestContextHolder 作为另一个线程的参数不是正确的方法,因为它的内容在处理过程中可能会发生变化。

在通过RequestContextHolder.getRequestAttributes()开始新的并发任务之前使用实际的请求,它包含所有的属性集,只是一个普通的对象,下面没有ThreadLocal。

关于java - 返回响应后,RequestContextHolder 中设置的属性丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42033295/

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