gpt4 book ai didi

java - 在子注入(inject)器中添加到 Multibinder

转载 作者:行者123 更新时间:2023-12-01 14:30:20 24 4
gpt4 key购买 nike

我正在尝试将 child 注入(inject)器的 Guice 功能与 Multibinders 结合起来。例如:

public class Test {
public static void main(String[] args) {
Guice.createInjector(new FirstModule(), new SecondModule()); // works perfectly, returns set with 2 elements
Guice.createInjector(new FirstModule()).createChildInjector(new SecondModule()); // fails: A binding to java.util.Set<Test$MyInterface> was already configured at Test$FirstModule.configure(Test.java:15).
}

private static class FirstModule extends AbstractModule {
@Override
protected void configure() {
Multibinder.newSetBinder(binder(), MyInterface.class).addBinding().to(FirstImplementation.class);
}
}

private static class SecondModule extends AbstractModule {
@Override
protected void configure() {
Multibinder.newSetBinder(binder(), MyInterface.class).addBinding().to(SecondImplementation.class);
}
}

private static interface MyInterface {}
private static class FirstImplementation implements MyInterface {}
private static class SecondImplementation implements MyInterface {}
}

是否可以让子注入(inject)器以某种方式添加到多重绑定(bind)中?

最佳答案

根据我的发现,这是不可能的,也不可能。如果在第一个注入(inject)器中请求一组对象,则必须使用来自第一个注入(inject)器的绑定(bind)注入(inject)它。如果您随后创建了一个子注入(inject)器并绑定(bind)了一个附加值,那么您实际上是从父注入(inject)器覆盖了 set 绑定(bind),而 Guice 不允许这样做。

关于java - 在子注入(inject)器中添加到 Multibinder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23829182/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com