3.5. Bean scopes
3.5 Bean scopes
Beanのスコープの定義はこうだ!
・singleton
デフォルト。シングルトンです。ステートレスにしなさい。
・prototype
毎回生成します。ステートフルにしなさい。
・request
HTTPリクエストのスコープです。Web層のアプリケーションコンテキストでしか使えません。
・session
HTTPSessionのスコープです。Web層のアプリケーションコンテキストでしか使えません。
・global session
なんかポートレットと関係あるらしい。名前からなんとなく想像つく。あとはスレッドスコープとか。スコープのカスタマイズとかあるらしいが、あとでね。
3.5.1 The singleton scope
コンテナごと1つのインスタンス。
3.5.2 The prototype scope
このスコープのBeanのみ、Springはそのライフサイクルを管理しない。なのでinitialization のライフサイクルコールバックは呼べるが、destroyはよべない。もしこのあたりを改造したい場合は、bean post-processorを改造しなさい。
3.5.3 Singleton beans with prototype-bean dependencies
Singletonにprototypeもたせるとprototypeは毎回生成できないよ。このあたり変えたい場合は3.4.6 Method Injectionみてね。
3.5.4 Request, session, and global session scopes
XmlWebApplicationContextなどでしか使えない。
3.5.4.1 Initial web configuration
まずweb層でApplicationContextをそもそも使えるようにする方法から説明しよう。
・web.xml(Servlet2.4)#Servlet2.3は別のやり方がある
...
org.springframework.web.context.request.RequestContextListener
...
3.5.4.2 Request scope
3.5.4.3 Session scope>>
HttpSessionが削除されたらこのbeanは死ぬ。