2

私はこのようなクラスを持っています -

class Messages
  {
      ...
      LinkedList<String> inputs;
      LinkedList<String> outputs;
      ...
  }

通常、コンストラクターで入力と出力を初期化します-

public Messages()
 {
    inputs = new LinkedList<String>();
    outputs = new LinkedList<String>();
 }

ただし、スプリング構成を使用して同じ結果を達成したいと考えています。では、次のノードの下には何を配置すればよいでしょうか?

<bean id="Messages" class="com.somename.Messages">
                                                   <--- what goes here?
</bean>

Spring Container が「Messages」Bean を作成するとき、コンストラクターも呼び出しますか?

4

4 に答える 4

3

はい、コンストラクターを呼び出します。IoC コンテナーがコンストラクターを呼び出さないのは非常に奇妙です。コンストラクターを経由せずにオブジェクトのインスタンスを構築するには、ある程度の時間が必要であり、ほとんどの場合、悪い考えです。

もちろん、宣言の一部として変数を初期化することもできます。

class Messages
{
    ...
    private final LinkedList<String> inputs = new LinkedList<String>();
    private final LinkedList<String> outputs = new LinkedList<String>();
    ...
}
于 2012-06-13T18:52:41.627 に答える
0

Spring はコンストラクターを呼び出します。また、コンストラクターの引数があれば一致します。

ここで詳細に説明されていますhttp://static.springsource.org/spring/docs/2.5.x/reference/beans.html#beans-factory-collaborators

于 2012-06-13T18:52:22.670 に答える
0

データなしで初期化したいだけの場合は、オブジェクト作成コンストラクターが呼び出されるため、コンストラクターでそれを行うことができます。特定のデータを割り当てたい場合は、クラスにセッターが必要であり、Bean の作成中にそれらを使用する必要があります。

于 2012-06-13T18:55:17.420 に答える