自定义杜松子酒托管对象的创建或创建同一类的两个不同实例

时间:2012-03-20 15:48:07

标签: gwt guice gin

我希望能够创建同一个类的两个实例,并为它们注入不同的属性,然后将这两个对象注入我的应用程序中的两个特定位置。

目前我的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 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。 你正在寻找的是@Assisted Inject,其中注入了一些构造函数参数,有些在实例化对象时作为参数传递。

您可以在this blog post找到帮助我入门的完整示例。