0

同じクラスの2つのインスタンスを作成し、それらに異なるプロパティを注入してから、それらの2つのオブジェクトをアプリケーションの2つの特定の場所に注入できるようにしたいと考えています。

現在、ClientModuleにメソッドがあります...

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

そして、プレゼンターなどで次のことを行います。

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

そしてそれは素晴らしい働きをします。対応する@Namedアノテーションに基づいて、正しいBeanを取得します。

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

したがって、SecondaryBeanの@Injectアノテーションは、たとえば尊重されません。

私にできることの1つは、関連する依存関係をgetMainBeanメソッドに渡すことですが、別のより洗練された、またはより優れたソリューションがあるのではないかと考えています。

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

4

1 に答える 1

1

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

このブログ投稿で完全な例を見つけることができ、私が始めるのに役立ちました。

于 2012-03-21T11:06:16.573 に答える