Внедрить внутри провайдера Guice и MapBinder - PullRequest
0 голосов
/ 26 октября 2018

У меня странный код, но я верю, что вы можете мне помочь! Я использую Guice, и у меня есть что-то вроде этого.

@Override
protected void configure() {
    MapBinder<String, Foo> mapBinder = MapBinder.newMapBinder(binder(), String.class, Foo.class);
    mapBinder.addBinding("key1").toProvider(() -> new FooImpl(parameter1));
    mapBinder.addBinding("key2").toProvider(() -> new FooImpl(parameter2));
}

Теперь моя проблема в том, что FooImpl не только имеет конструктор с определенным параметром для каждого ключа, но также имеет @Inject внутри класса

public class FooImpl {

    private Object parameter;

    @Inject
    private SomeClass someClass

    public FooImpl(Object parameter) {
        this.parameter = parameter;
    }
}

Что происходит в моем примере? @Inject не работает

если в mapBinder я делаю

mapBinder.addBinding("key2").toInstance(new FooImpl(parameter2));

Это работает, но я использую один и тот же экземпляр FooImpl каждый раз, и это может принести мне некоторые проблемы из-за совпадения.

Я буду очень признателен, если кто-то может помочь мне с этим, который застрял на несколько дней.

...