web-dev-qa-db-ja.com

Spring MVCでのコントローラーのライフサイクル

Spring MVCのコントローラーのライフサイクルは何ですか?

コントローラはいつ作成され、いつ破棄されますか?複数のスレッドで共有されていますか?複数のリクエストで同時に使用できますか?.

37
flybywire

これがライフサイクルのビューです。

http://www.flickr.com/photos/60896767@N00/89101625/sizes/l/

はい、それらはスレッド/リクエストによって共有されます。スレッドセーフになるように記述してください。彼らは無国籍であるべきです。通常、すべての作業を行うSpringサービスへの参照があります。コントローラーは、Web層のバインディング、検証、ルーティングを処理します。

25
duffymo

コントローラは単なるBeanであり、シングルトンまたはプロトタイプにすることができます。それは、実行しようとしていることに依存します。ステートフル性が必要な場合は、プロトタイプを使用します。デフォルトでは、それらはシングルトンです。

http://www.digizenstudio.com/blog/2006/10/09/spring-controllers-with-prototype-scope/

14
Mainguy

Spring MVCのすべてのコントローラーはシングルトンです。他の通常のシングルトンBeanと同様に、コントローラーのインスタンスは、Webアプリケーションコンテキストの開始後に作成され、終了する前に破棄されます。

コントローラーBeanの定義に他のスコープ(プロトタイプなど)を指定しても、Springにはパフォーマンスのためのコントローラー用のキャッシュがあるため、最初に取得したコントローラーのインスタンスのみが繰り返し使用されます。

9
user179633