私は設定しようとしていますリクエストスコープBean春に。
リクエストごとに Bean が 1 回作成されるように設定できました。次に、HttpServletRequest オブジェクトにアクセスする必要があります。
Bean はリクエストごとに 1 回作成されるため、コンテナーはリクエスト オブジェクトを Bean に簡単に挿入できると思います。どうすればそれができるでしょうか?
ベストアンサー1
Springは現在のHttpServletRequest
オブジェクト(および現在のHttpSession
オブジェクト)をラッパー型のオブジェクト。このラッパー オブジェクトは ThreadLocal にバインドされており、メソッドServletRequestAttributes
を呼び出すことによって取得されます。static
RequestContextHolder.currentRequestAttributes()
ServletRequestAttributes
getRequest()
現在のリクエストを取得するメソッド、getSession()
現在のセッションを取得するメソッド、および両方のスコープに格納されている属性を取得するメソッドを提供します。次のコードは、少し見苦しいですが、アプリケーションのどこからでも現在のリクエスト オブジェクトを取得できます。
HttpServletRequest curRequest =
((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes())
.getRequest();
RequestContextHolder.currentRequestAttributes()
メソッドはインターフェースを返すため、ServletRequestAttributes
インターフェースを実装する型キャストを行う必要があることに注意してください。
Spring Javadoc: リクエストコンテキストホルダー|サーブレットリクエスト属性