gpt4 book ai didi

java - Guice 构造函数注入(inject) String 依赖项(或其他未绑定(bind)的原语)?

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

这是一些代码:

public class InjectedClass{
private final Dependency dependency;
private final String string;
@Inject
public InjectedClass(Dependency dependency, String string){
this.dependency=dependency;
this.string=string;
}
}

假设我已在模块中绑定(bind)了依赖项,但那里没有任何字符串绑定(bind)。 Guice 如何/什么选择作为 String 参数的默认值?在我的(更复杂的)测试用例中,它似乎将其设置为“”,但是它如何执行的逻辑对我来说并不明显,我不知道这是否是确定性行为。

最佳答案

默认情况下,Guice 将实例化任何具有其中之一的对象

  • @Inject 标记的非私有(private)构造函数
  • 非私有(private)无参数构造函数
  • 默认构造函数(无构造函数)

因为 String 有一个无参数的公共(public)构造函数,new String() 将创建一个相当于 ""的字符串

这是确定性行为,任何具有上述条件的类型都会发生。如果你担心的话,你可以这样做

binder().requireAtInjectOnConstructors()

然后 Guice 将简单地报告缺少的绑定(bind)。此外,计划中的 future 增强功能将防止 java.lang.* 类型在没有限定符/绑定(bind)注释的情况下被绑定(bind)。这还可以防止像 String 或 Integer 这样的核心类型仅仅因为有人注入(inject)它们而自动与“”或 0 绑定(bind)。

关于java - Guice 构造函数注入(inject) String 依赖项(或其他未绑定(bind)的原语)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24336940/

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