我正在学Google Guice。你知道如何实现“机器人腿”问题吗?让我用一个例子来解释一下。如何在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
成员,这有助于吉斯知道内部成员source
应与SourceDatabase
执行注射?
编辑:感谢Daniel Martin,在他的评论中给我们提出了这类问题的名称。
https://github.com/google/guice/wiki/FrequentlyAskedQuestions#how-do-i-build-two-similar-but-slightly-different-trees-of-objects(你描述的是“机器人腿”问题) –