2012-03-20 15 views
0

同じクラスの2つのインスタンスを作成し、それぞれ異なるプロパティを注入し、私のアプリケーションの特定の場所。ジーンマネージドオブジェクトの作成をカスタマイズするか、同じクラスの2つの異なるインスタンスを作成する

public MyPresenter(final EventBus eventBus, final MyView view, 
        @Named("bean1") MainBean bean, TitleSetupData data) { 
     super(eventBus, view); 
     this.bean1 = bean1; 
    } 

そして、それは素晴らしい作品:

現在、私はなど、私は次の操作を実行し、私の発表者で

@Provides 
    @Named("bean1") 
    public MainBean getMainBean() { 
     MainBean mainBean = new MainBean(new SecondaryBean()); 
     return mainBean; 
    } 

そして...私のClientModule方法があります。対応する@Namedアノテーションに基づいて、私は正しいBeanを取得します。

しかし、このアプローチでは、MainBeanのすべての依存関係を@Providesメソッドに作成して注入する必要があるという弱点があります。

したがって、SecondaryBeanの@Injectアノテーションは、例えば、守られません。

私ができることの1つは、関連する依存関係をgetMainBeanメソッドに渡すことですが、別のよりエレガントで優れたソリューションがあるかどうかは疑問です。

誰でもアイデアがありますか?

答えて

1

私は同じ問題を抱えていました。 探しているものは@Assisted Injectです。コンストラクタパラメータの一部が注入され、オブジェクトのインスタンス化時に引数として渡されるものがあります。

this blog postで完全な例を見つけることができます。

関連する問題