在经典的 spring-mvc 中,可以在RequestContextHolder
. 在此基础上,我们可以解析 a 中的传入请求HandlerInterceptorAdapter
,设置请求参数,例如当前登录的用户、唯一请求 ID(用于日志关联)等。这些请求属性可以在请求的生命周期内从任何服务(不仅是控制器)静态检索。
我正在尝试用 spring-webflux 实现类似的东西。
我可以使用 aWebFilter
来拦截所有传入的请求,获取当前的ServerWebExchange
并在其上设置属性。ServerWebExchange
但是,除了控制器方法之外,我看不到任何其他方法可以获取当前请求。
我正在寻找比传递ServerWebExchange
(或ServerHttpRequest
)更好的解决方案。
这似乎在 webflux 中很难实现,因为我们不能依赖在 ThreadLocal 上保存与特定请求相关的变量(由于非阻塞架构,单个线程可以在请求之间切换)。
尽管如此,这是一个重要的要求。也许有不同的方法?