Как реализовать вариант использования «ножки робота» в 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
и это помогает Guice знать, что внутренний членsource
следует вводить сSourceDatabase
реализация?
Редактировать: Спасибо Даниэлю Мартину за то, что он дал нам название проблемы такого рода в своем комментарии.