従来のspring-mvcでは、リクエストスコープの属性をに設定することができますRequestContextHolder
。これに基づいて、で着信リクエストを解析し、HandlerInterceptorAdapter
現在ログインしているユーザー、一意のリクエストID(ログ相関用)などのリクエストパラメータを設定できます。これらのリクエスト属性は、リクエストの存続期間中、任意のサービス(コントローラーだけでなく)から静的に取得できます。
私はspring-webfluxと同様のことを達成しようとしています。
を使用して、WebFilter
すべての着信リクエストをインターセプトし、現在のリクエストを取得してServerWebExchange
属性を設定できます。ただしServerWebExchange
、コントローラーメソッド以外の場所で現在のリクエストを取得する方法がわかりません。
私はあちこちを通過するServerWebExchange
(またはServerHttpRequest
)よりも良い解決策を探しています。
ThreadLocalで特定のリクエストに関連付けられた変数を保存することに依存できないため、これをwebfluxで実現するのは難しいようです(非ブロッキングアーキテクチャのため、単一のスレッドがフライト中にリクエストを切り替えることができます)。
それでも、これは重要な要件です。たぶん別のアプローチがありますか?
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加