如何在Spring-WebFlux中获取当前请求的上下文 [英] How to get the context of the current request in spring-webflux

查看:8
本文介绍了如何在Spring-WebFlux中获取当前请求的上下文的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在经典的Spring-MVC中,可以在RequestContextHolder上设置请求范围的属性。在此基础上,我们可以解析HandlerInterceptorAdapter中的传入请求,设置请求参数,如当前登录的用户、唯一请求ID(用于日志关联)等。 在请求的生存期内,可以从任何服务(不仅仅是控制器)静态检索这些请求属性。

我正在尝试使用Spring-WebFlux实现类似的功能。

我可以使用WebFilter截取所有传入的请求,获取当前的ServerWebExchange并为其设置属性。但是,除了控制器方法之外,我看不到任何其他方法来获取当前请求的ServerWebExchange

我正在寻找比到处传递ServerWebExchange(或ServerHttpRequest)更好的解决方案。

这似乎很难在Webflow中实现,因为我们不能依赖于将与特定请求相关联的变量保存在ThreadLocal上(由于非阻塞体系结构,单个线程可以在请求之间进行切换)。
尽管如此,这仍然是一项重要的要求。也许还有不同的方法?

推荐答案

您描述的方法是当前支持的方法。 正如您所强调的,对ThreadLocals使用静态方法是不可能的。

反应堆正在寻找具有新上下文功能的替代方案(参见this PR)。Spring可能会选择并使用它,但不一定用于请求属性,因为当前模型非常适合。

如果您希望特定的扩展点拦截请求,请在Spring框架项目上创建JIRA issue,描述您试图实现的目标以及失败的地方。

这篇关于如何在Spring-WebFlux中获取当前请求的上下文的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆