Я хотел бы иметь возможность внедрить общую реализацию общего интерфейса с использованием guice. < /p>
public interface Repository {
void save(T item);
T get(int id);
}
public MyRepository implements Repository {
@Override
public void save(T item) {
// do saving
return item;
}
@Override
public T get(int id) {
// get item and return
}
}
< /code>
в c# с помощью castle.windsor, я бы смог сделать: < /p>
Component.For(typeof(Repository)).ImplementedBy(typeof(MyRepository))
< /code>
Но я не думаю, что эквивалент существует в Guice. Я знаю, что могу использовать Typeliteral < /code> в Guice для регистрации отдельных реализаций, но есть ли какой -нибудь способ зарегистрировать их одновременно, как в Windsor?Injector injector = Guice.createInjector(new MyModule());
Repository repo1 = injector.getInstance(new Key() {});
Repository repo2 = injector.getInstance(new Key() {});
< /code>
Хотя более вероятное использование будет внедрение в другой класс: < /p>
public class ClassThatUsesRepository {
private Repository repository;
@Inject
public ClassThatUsesRepository(Repository repository) {
this.repository = repository;
}
}
Подробнее здесь: https://stackoverflow.com/questions/423 ... sing-guice