注入提供者Guice和MapBinder

时间:2018-10-26 03:20:27

标签: java guice inject provider

我的代码很奇怪,但是我相信您可以帮助我!我正在使用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实例,由于并发,它可能给我带来一些问题。

如果有人可以帮助我解决我几天来遇到的困扰,我将非常感激。

0 个答案:

没有答案