gpt4 book ai didi

java - Spring 中的请求和 session bean 生命周期

转载 作者:行者123 更新时间:2023-11-30 02:39:26 24 4
gpt4 key购买 nike

在从处理请求的主线程创建的单独线程中异步使用具有请求或 session 范围的 bean 是否安全?

我想知道如果请求完成或 session 过期并且子线程仍处于 Activity 状态,会发生什么。 spring 会销毁该 bean 还是它知道该 bean 仍在使用中。

我只是在 Spring 中熟悉 bean 范围和生命周期。请原谅我的菜鸟。

最佳答案

简短回答:这不安全,请复制进行异步处理所需的信息。

长答案:Spring 使用代理实现请求范围的 bean。该代理被注入(inject)到您的类中。每当您在此代理上调用方法时,Spring 都会查找对当前请求有效的实际 bean(使用 ThreadLocal 机制),然后将调用委托(delegate)给正确的实例。

一旦请求线程完成,关联的请求作用域 bean 就会被清除(以免干扰下次使用同一线程处理不同的请求)。它们没有被“破坏”,但由于您只有对它们的间接引用(通过注入(inject)的代理),它们实际上是不可访问的,并且会被垃圾收集。

如果请求完成后,您尝试调用代理上的方法之一,并且不再有有效的请求,Spring 将抛出异常。

关于java - Spring 中的请求和 session bean 生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42176789/

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