質問: お世話になっております。 springを使用する際にxmlファイルで beanを定義する(beanタグでクラスを指定する) ことがあると思います。 ここに定義するか、@Componentをクラスに 指定すると、実装側でautowiredが可能に なっていちいちnewする必要がなくなる、 程度の認識しか持ってなかったのですが これらの方法で指定された全てのbean (beanという言い方で合っているでしょうか?)は tomcatを起動する際に一度生成される、 つまりシングルトンオブジェクトなのでしょうか? その場合、リクエストごとに生成が必要な オブジェクト(シングルトンでないオブジェクト)など のように個別のフィールドをクラス内に定義 してはいけないと思いますが そもそもシングルトンにすべきかどうかは どのように判断すればよいのでしょうか? 例えばエンティティクラスはシングルトンにしたら 恐ろしいことになるという想像はつきます。 その他のサービス、dao、アクション、vo、dto、ドメイン、コントローラなどはどのように 判断されるのでしょうか?
回答: Springだとデフォルトではシングルトンになりますが、 それを回避するためのアノテーションも用意されています。 Springのアノテーション周りについて、それほどは詳しくないので、 詳細は以下のリンク先でご確認いただければと。 springのシングルトン問題を@Scopeを使って回避する AutowiredでDIするフレームワークなら大体、この手の問題を回避するためのものが準備されています。