2016-11-03 2 views
0

を:ロケインスタンス化プロトタイプ豆

(CardImpl)ctx.getBean("Card", driver, webElement) 

CardImplは次のように定義されています。

@Component 
@Scope(value = ConfigurabelBeanFactory.SCOPE_PROTOTYPE) 
public class CardImpl implements Card 

だからここで私は、複数のインスタンス化された豆で終わること(上記のように変数webElementをコンストラクタに提供するので)異なるプロパティを持ちます。

私はこれらのBeanを作成した直後に使用しませんが、私のフローの後の段階でそれらのBeanを必要とします。

Q:既に作成されているBean(Springコンテナのどこかにある)を検索引数として使用すると、そのbeanを見つけたり参照したりするにはどうすればよいですか?

P.S.このようなアプローチが良い練習とはみなされない場合は、任意の選択肢を指差してください。

答えて

1

最初にctx.getBeanを使用しないでください。これは最後の結果としてのみ使用してください。 Beanを取得するコンテキストに頼ってはならず、代わりにSpringで依存関係注入を使用してください。

一般的に私はあなたのアプリケーションのリセットが彼らがやりとりしているBeanのスコープを知っているか気にするべきではないと思います。それがセッションであれ、シングルトンであれ、プロトタイプであれ、これはインターフェースには影響しません。

あなたがやっていることをする方法はありますが、静的なものを持っていることと同じことになるでしょう。Map<String, CardImpl>とそれからインスタンスを引き出します。これは、Spring依存性注入の目的をすべて破ります。あなたはシングルトンのビーンでこのマップを持つことができますが、これは私が推測することが最も恐ろしいでしょう。

+0

ありがとうございます。ここで私はあなたの意見に同意しますが、私は別の解決策を考え出すことができませんでした。私がここで話しているこれらのBeanは、動的にインスタンス化されたプロパティを持つSelenium WebElementsを格納するために使用されます。基本的に、別の方法がある場合は、私が必要とするすべての注入を行うBeanに追加のパラメータを提供できます。しかし私の研究によれば、それを達成する唯一の方法は 'getBean()'メソッドを使うことです。 –