ControllerにHttpServletRequestをautowiringできるのはなぜ?

@ContollerHttpServletRequest インスタンスをインジェクション(autowired)するためにはいくつか解決しなければならない問題があると思われました。

  • HttpServletRequest をインジェクション対象としなければならない
  • @Contoller はsingleton-scopeであるのに対し、 HttpServletRequest は普通に考えるとrequest-scope。そのままではsingletonにrequestはインジェクションできない(参考)。

これらはこの辺りの実装で対処しているようです。
ここで用いられている RequestObjectFactorygetObject()メソッドが返すのがインジェクションされる HttpServletRequestオブジェクトのようです。
詳しくはコールスタックをたどっていく必要がありそう。

参考:

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です