2011-04-13 9 views
1

私は豆のSpringインスタンス化をよりよく理解しようとしています。私の疑問を説明するために、我々はコントローラに配線されているサービスクラスを持っていると仮定しましょう、ここでの質問は次のとおりです。春の注入とオブジェクトのインスタンス化

  1. どのようにコントローラのライフサイクルを管理する 春のだろうか?新しいオブジェクト はリクエストごとに作成されますか?
  2. サービスがインスタンス化され、コントローラに が配線されると、 はそのオブジェクト参照を再利用して を他のBeanに配線しますか?

答えて

3
  1. サーブレットと同様に、コントローラのライフサイクルは要求を超えています。アプリケーション内のすべてのコントローラは、アプリケーションの起動時に一度だけインスタンス化されます。その後、これらのオブジェクトはすべての要求を処理するために再利用されます。
  2. Bozhoが指摘するように、デフォルトではすべてのBeanはシングルトンスコープにあるため、特に指定しない限り、すべてのBeanはどこでも再利用されます。
0

すべては、Beanスコープによって異なります。デフォルトでは、すべてのBeanはシングルトンスコープにあります。つまり、それらはコンテナによって一度だけインスタンス化されます。

@Scope("request")(または同等のxml)を指定すると、要求スコープ付きコントローラのすべてのインスタンスに同じサービスオブジェクト(シングルトン)が注入されます。 (ただし、リクエストスコープのコントローラはほとんど必要ありません)