|
15
|
| jonas.hartwig · 技术社区 · 10 年前 |
|
|
1
17
对于未来的冒险家: 我花了一些时间仔细研究Spring代码,发现 RequestContextHolder 具有可继承RequestAttributesHolder的。如果您查看这是什么的文档(继承自: InheritableThreadLocal )可以阅读以下内容: 当变量中维护的每线程属性(如用户ID、事务ID)必须自动传输到创建的任何子线程时,可继承线程局部变量优先于普通线程局部变量使用。 所以 请求上下文保持器 有一个字段,实际上setRequestAttributes支持使用inheritableRequestAttibutesHolder的标志。此外,如果你看 RequestContextListener ->requestInitialized会发现调用它时没有标记(=false)。所以我最终做的是:
瞧,我可以在子线程中访问SessionContextProvider。 |
|
|
2
3
在我的案例中,使用 OrderedRequestContextFilter 解决问题。您还必须将threadContextInheritable标志设置为true,如下所示:
|