我正在使用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;
}