Spring @Scope 落とし穴

@Scope("xxxxxxx")

スコープに設定可能な値

スコープ値 概要
singleton Spring起動時にインスタンスを1つだけ生成。
以降は、生成されたインタンスを共有して使う。
スコープの値を設定しなかった場合は、singletonデフォルト設定となるために気をつける必要がある
prototype Beanを取得する度に、毎回インスタンスが生成される。
session HTTPセッション単位でインスタンスが生成される。
※WEBアプリケーションの場合にのみ使用できる。
request HTTPレクエスト単位でインスタンスが生成される。
※WEBアプリケーションの場合にのみ使用できる。
globalSession ポートレット環境におけるGrobalSession単位でインスタンスが生成される。
ポートレットに対応したWEBアプリケーションの場合にのみ使用できる。
application サーブレットのコンテキスト単位でインスタンスが生成される。
※WEBアプリケーションの場合にのみ使用できる。

 

 singletonのスコープのクラス内で、prototypeのスクープを設定したクラスがあった場合は、singletonのクラスに引きづられて、singletonのスコープになってします。

 

スコープの異なるBeanをフィールドに持つ場合に注意が必要。