Вводить общую реализацию с использованием GuiceJAVA

Программисты JAVA общаются здесь
Anonymous
Вводить общую реализацию с использованием Guice

Сообщение Anonymous »

Я хотел бы иметь возможность внедрить общую реализацию общего интерфейса с использованием 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

Вернуться в «JAVA»