2016-04-18 12 views
2

プロトタイプbeanをと定義することは可能ですか?カスタムパラメータ値を使用してBeanのインスタンスを取得できるように、XML設定またはアノテーションベースの設定を使用しますか?私のユースケースは、インバウンドメッセージで提供されるさまざまなパラメータ値を使用してAPI呼び出しを行うメッセージキューハンドラです。パラメータ付きSpringプロトタイプBean?

私は2つのいずれかを行うことができそうです。この場合

  • は私のプロトタイプ・スコープBeanのインスタンスを取得して、受信メッセージに対して特異的であるように、それをカスタマイズするセッターを呼び出します。
  • 平文new MyPrototypeBean()を使用してBeanクラスの新しいインスタンスを作成し、settersを呼び出してインスタンスをカスタマイズします。

多分私の質問の言葉遣いの別の方法は:プロトタイプスコープのビーンを使用する利点と単純なJavaコンストラクタを使用する利点は何ですか?

答えて

1

コンストラクタに引数を渡して別のBeanからプロトタイプBeanを取得するには、<lookup-method>(XML構成)または@Lookup(注釈ベースの構成)を使用できます。

あなたが(ない豆から)「非管理」コードからプロトタイプのインスタンスを取得したい場合は、検索メソッドを使用したくないまたは、あなたがorg.springframework.beans.factory.BeanFactory.getBean(String beanName, Object...)を使用して同じことを達成することができます。

プロトタイプスコープBeanと単純なJavaコンストラクタの違いは、プロトタイプスコープBeanがまだSpringコンテナの機能にアクセスできることです。 XMLコンフィグレーション(<property name="someCollaborator" ref="..."/>)またはアノテーション(@Resource@Autowired、...)で提供される共同作業者を持つことができます。ApplicationContextAwareのようなSpring対応インタフェースを実装できるため、プロトタイプBeanそれ自体がコンテナにアクセスできます)。

+0

ありがとうございます。答えを編集して '@ Lookup'メソッドの段落を最初に置くことはできますか? Pivotal Supportはあなたの答えを確認し、おそらく上記の理由と同じ理由で、@ Lookupが良いアプローチだと言いました。 –

+0

ありがとう、私はそれに応じて答えを再配置しました。 –

+0

@PiotrFindeisen私は同様のものを実装する必要があります。私はSpring Service Locatorから取得しているプロトタイプBean に実行時にojectを渡すことができます。 Service Locatorメソッドは基本的に というSpring Beanのid/nameへのマッピングであるString引数を取ります。 – bluelurker

関連する問題