Spring MVCのコントローラーのライフサイクルは何ですか?
コントローラはいつ作成され、いつ破棄されますか?複数のスレッドで共有されていますか?複数のリクエストで同時に使用できますか?.
これがライフサイクルのビューです。
http://www.flickr.com/photos/60896767@N00/89101625/sizes/l/
はい、それらはスレッド/リクエストによって共有されます。スレッドセーフになるように記述してください。彼らは無国籍であるべきです。通常、すべての作業を行うSpringサービスへの参照があります。コントローラーは、Web層のバインディング、検証、ルーティングを処理します。
コントローラは単なるBeanであり、シングルトンまたはプロトタイプにすることができます。それは、実行しようとしていることに依存します。ステートフル性が必要な場合は、プロトタイプを使用します。デフォルトでは、それらはシングルトンです。
http://www.digizenstudio.com/blog/2006/10/09/spring-controllers-with-prototype-scope/
Spring MVCのすべてのコントローラーはシングルトンです。他の通常のシングルトンBeanと同様に、コントローラーのインスタンスは、Webアプリケーションコンテキストの開始後に作成され、終了する前に破棄されます。
コントローラーBeanの定義に他のスコープ(プロトタイプなど)を指定しても、Springにはパフォーマンスのためのコントローラー用のキャッシュがあるため、最初に取得したコントローラーのインスタンスのみが繰り返し使用されます。