gpt4 book ai didi

dependency-injection - requireBinding有什么用?

转载 作者:行者123 更新时间:2023-12-05 03:59:49 28 4
gpt4 key购买 nike

我是 Guice 的新手,正在尝试了解 requireBinding 的用法以及何时/为何使用它。

据我了解,在创建注入(inject)器时,Guice 遍历所有模块的 configure() 方法的代码并构建依赖关系图。

如果 Guice 自己构建依赖图,那么为什么模块需要添加 requireBinding?只要我能理解 requireBinding 的用法就是添加对 guice 的依赖关系图似乎正在做的类的显式依赖。

我想了解我们什么时候应该使用 requireBinding 以及不在模块中使用它有什么影响。

我已经阅读了 Guice 的官方文档并在 Stackoverflow/任何其他博客上搜索了所有现有问题,但找不到上述问题的满意答案。

添加到原始问题。

查看 AbstractModule 的源代码,实现看起来像

protected void requireBinding(Key<?> key) {
this.binder().getProvider(key);
}

protected void requireBinding(Class<?> type) {
this.binder().getProvider(type);
}

您认为不会有任何副作用,因为它是一个“get”调用。但另一方面,从 Binder 本身来看,它向 ProviderLookup

类型的元素列表中添加了一些元素
public <T> Provider<T> getProvider(Dependency<T> dependency) {
ProviderLookup<T> element = new ProviderLookup(this.getElementSource(), dependency);
this.elements.add(element);
return element.getProvider();
}

最佳答案

我一直将 requireBinding() 作为模块的契约。

您是正确的,当您调用 #get() 或尝试注入(inject)依赖于绑定(bind)的对象时,图形最终会失败。但是,我相信 requireBinding 在创建注入(inject)器时与创建对象时(通过注入(inject)器)会导致失败。当我在谷歌时,它的功能更多地是一种契约(Contract),而不是某种具有相应行为的东西。

关于dependency-injection - requireBinding有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56846633/

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