2012-03-20 79 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找到一个完整的例子,帮助我开始。

相关问题