RoboGuice怎么知道我注射的意思



我正在使用RoboGuice 4.0beta2,我有这个问题

我有几个不同的对象来实现相同的接口

打电话给他们A 实现 ITestB 实现 ITestC 实现 ITest

我有类 D,它一起使用所有 3 个实现,每个都有不同的目的,但相同的 API

在类 D 中,我想注入 A、B 和 C,它们彼此无关,除了它们都实现相同的接口这一事实

我将如何配置模块类以了解我的意思是ITest的不同实现?

假设您具有以下配置:

class D{
    @Inject ITest a;
    @Inject ITest b;
    @Inject ITest c;
}

您可以像下面这样设置模块,以便通过@Name注入不同类型的模块:

public class ABCModule extends AbstractModule {
    @Override
    protected void configure() {
        bind(ITest.class).annotatedWith(Names.named("a")).to(A.class);
        bind(ITest.class).annotatedWith(Names.named("b")).to(B.class);
        bind(ITest.class).annotatedWith(Names.named("c")).to(C.class);
    }
}

这允许您注入不同类型的类型,如下所示:

class D{
    @Inject @Named("a") ITest a;
    @Inject @Named("b") ITest b;
    @Inject @Named("c") ITest c;
}

最新更新