古典的なspring-mvcでは、リクエストスコープ属性をRequestContextHolder
に設定することができます。それに基づいて、HandlerInterceptorAdapter
で着信要求を解析し、現在ログインしているユーザー、一意の要求ID(ログ相関)などの要求パラメータを設定できます。 これらのリクエスト属性は、リクエストの有効期間中に(コントローラだけでなく)サービスから静的に取得できます。spring-webfluxで現在のリクエストのコンテキストを取得する方法
私はspring-webfluxと同様のことを達成しようとしています。
WebFilter
を使用してすべての着信要求をインターセプトし、現在のServerWebExchange
を取得し、その上に属性を設定できます。しかし、私は現在のリクエストのServerWebExchange
をコントローラメソッド以外のどこにでも持ち込むことはできません。
ServerWebExchange
(またはServerHttpRequest
)を渡すよりも優れた解決策を探しています。
ThreadLocalに対する特定のリクエストに関連付けられた変数を保存することに依存することができないため、webfluxで実現するのは難しいようです(ノンブロッキングアーキテクチャのため、スレッド間でリクエストを切り替えることができます)。
これは重要な要件です。たぶん別のアプローチがありますか?
私はJIRAの問題を作成しました:https://jira.spring.io/browse/SPR-15680 –