Guice Provider Injection - PullRequest
       31

Guice Provider Injection

0 голосов
/ 16 октября 2018

Я использую Guice для DI, где я хочу внедрить несколько экземпляров одного и того же интерфейса в вызывающий класс.Иерархия классов выглядит следующим образом:

public interface MyInterface<T, U> {
    public T getX(U u);
}

public abstract class MyAbstractClass<T, U> implements MyInterface<T, U> {
    public void routineStuff() {
        ...
    }
}

public class MyImplOne extends MyAbstractClass<T1, U1> {
    public T1 getX(U1 u) {
        return new T1(u);
    }
}

public class MyImplTwo extends MyAbstractClass<T2, U2> {
    public T2 getX(U2 u) {
        return new T2(u);
    }
}

public class MainClass {
    @Inject
    public MainClass(Provider<MyInterface> myInterface) {
    }

    public void DoX1() {
         myInterface.get().getX().print();  // should inject MyImplOne
    }

    public void DoX2() {
         myInterface.get().getX().print();  // should inject MyImplTwo
    }
}

Возможно ли это с Guice?Нужно ли мне писать классы провайдеров, которые бы предоставили необходимые объекты для MyImplOne и MyImplTwo, а также какова должна быть конфигурация, как в этом случае?

...