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)



...


org.springframework.web.context.request.RequestContextListener


...

#Servlet2.3は別のやり方がある

3.5.4.2 Request scope



3.5.4.3 Session scope>>



HttpSessionが削除されたらこのbeanは死ぬ。