2

<code>Personのインスタンスを作成するプロデューサーメソッドがあります。

このメソッドが作成するインスタンスは型PersonBeanであり、明らかに実装されていPersonます。

このクラスには、初期化メソッドが含まれています。

@Inject
public void setSomething(final Something something) {
  // whatever
}

BeanアーカイブのクラスパスにもSomething実装があり、ここに注入する候補となるはずです。

この実装は、プロデューサーメソッドで生成されていない別のオブジェクトの適切に注釈が付けられたフィールドに注入されることを確認したので、Weldがそれを検出していること、有効であるなどを確認しています。

私のプロデューサーメソッドの戻り値に、 Weld/コンテナーが提供する依存性注入適用されるかどうかについての仕様は(私には)明確ではありません。

私は確かに、この初期化メソッドが自動的に呼び出されないことを観察しています。

要約すると、私の質問は、オブジェクトを生成している場合、それは私のプロデューサーメソッドがそのオブジェクトのすべての初期化を処理する必要があることを意味しますか、それとも(代わりに私が期待すること)私のプロデューサーメソッドはインスタンス化のみを担当しますか?

4

1 に答える 1

3

オブジェクトを生成している場合、それは私のプロデューサーメソッドがそのオブジェクトのすべての初期化を処理する必要があることを意味しますか、または(代わりに私が期待すること)私のプロデューサーメソッドはインスタンス化のみを担当しますか?

仕様から:

3.3. Producer methods
    A producer method acts as a source of objects to be injected, where:
    - the objects to be injected are not required to be instances of beans, 

これはあなたの質問に答えるはずです:あなたが(を使って)新しいオブジェクトをインスタンス化するnewなら、あなたは初期化の世話をしなければならないでしょう。

(プロデューサーメソッドのおそらくより一般的なユースケースは、既存のBeanを特定のスコープに構成してプロデュースすることです...)

于 2012-06-07T04:20:21.657 に答える