【发布时间】:2016-03-03 22:12:38
【问题描述】:
我正在学习 Google Guice。你知道如何实现“机器人腿”的问题吗?让我用一个例子来解释一下。
假设我有一个名为Service的类:
@Singleton
public class Service {
@Inject
Source source;
}
接口Source有两种实现:
public class SourceDatabase implements Source {
}
public class SourceFileSystem implements Source {
}
我的模块是这样实现的:
public class MyModule extends AbstractModule {
@Override
protected void configure() {
bind(Service.class).asEagerSingleton();
}
}
好吧,我想知道这是否可能:
public class MainClass {
@Inject @SomeAnnotation("database")
Service serviceWithADatabaseSource;
@Inject @SomeAnnotation("file-system")
Service serviceWithAFileSystemSource;
}
是否存在一些注释或绑定让我这样做,让我注释像 serviceWithADatabaseSource 这样的成员,这有助于 Guice 知道内部成员 source 应该注入 SourceDatabase 实现?
编辑:感谢 Daniel Martin,在他的评论中为我们提供了此类问题的名称。
【问题讨论】:
-
github.com/google/guice/wiki/…(你说的是“机器人腿”问题)
标签: java dependency-injection guice