如何在Spring-WebFlux中获取当前请求的上下文 [英] How to get the context of the current request in spring-webflux
本文介绍了如何在Spring-WebFlux中获取当前请求的上下文的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
RequestContextHolder
上设置请求范围的属性。在此基础上,我们可以解析HandlerInterceptorAdapter
中的传入请求,设置请求参数,如当前登录的用户、唯一请求ID(用于日志关联)等。
在请求的生存期内,可以从任何服务(不仅仅是控制器)静态检索这些请求属性。
我正在尝试使用Spring-WebFlux实现类似的功能。
我可以使用WebFilter
截取所有传入的请求,获取当前的ServerWebExchange
并为其设置属性。但是,除了控制器方法之外,我看不到任何其他方法来获取当前请求的ServerWebExchange
。
我正在寻找比到处传递ServerWebExchange
(或ServerHttpRequest
)更好的解决方案。
这似乎很难在Webflow中实现,因为我们不能依赖于将与特定请求相关联的变量保存在ThreadLocal上(由于非阻塞体系结构,单个线程可以在请求之间进行切换)。
尽管如此,这仍然是一项重要的要求。也许还有不同的方法?
推荐答案
您描述的方法是当前支持的方法。
正如您所强调的,对ThreadLocals
使用静态方法是不可能的。
如果您希望特定的扩展点拦截请求,请在Spring框架项目上创建JIRA issue,描述您试图实现的目标以及失败的地方。
这篇关于如何在Spring-WebFlux中获取当前请求的上下文的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文