2012-03-20 80 views
0

我希望能夠創建同一個類的兩個實例並讓它們注入不同的屬性,然後將這兩個對象注入到兩個我的應用程序中的特定位置自定義創建杜松子酒管理對象或創建同一類的兩個不同實例

目前,我有一種方法,我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註釋都不會被使用。

我可以做的一件事是傳入getMainBean方法的任何相關的依賴關係,但我想知道是否可能有另一個更優雅或更好的解決方案。

任何人有任何想法?

回答

1

我遇到了同樣的問題。 您在尋找的是@Assisted Inject,其中一些構造函數參數被注入,並且有些在您實例化對象時作爲參數傳遞。

你可以在this blog post找到一個完整的例子,幫助我開始。

相關問題