Как реализовать вариант использования «ножки робота» в 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 реализация?

Редактировать: Спасибо Даниэлю Мартину за то, что он дал нам название проблемы такого рода в своем комментарии.

Ответы на вопрос(1)

Ваш ответ на вопрос