And*_*rew 0 java constructor dependency-injection guice
这是一些代码:
public class InjectedClass{
private final Dependency dependency;
private final String string;
@Inject
public InjectedClass(Dependency dependency, String string){
this.dependency=dependency;
this.string=string;
}
}
Run Code Online (Sandbox Code Playgroud)
假设我已经将我的依赖项绑定在我的模块中,但是我没有对String进行任何绑定.Guice如何/如何选择成为String参数的默认值?在我(更复杂的)测试用例中,似乎将其设置为"",但是它的逻辑如何对我来说并不明显,我不知道这是否是确定性行为.
默认情况下,Guice将实例化任何具有任何对象的对象
因为String有一个no-args公共构造函数,所以new String()将创建一个等价的字符串 ""
这是确定性行为,并且将在具有上述条件的任何类型中发生.如果你担心它,你可以做到
binder().requireAtInjectOnConstructors()
Run Code Online (Sandbox Code Playgroud)
那么Guice只会报告一个缺失的绑定.此外,还计划进行未来的增强,以防止java.lang.*类型在没有限定符/绑定注释的情况下被绑定.这也会阻止像String或Integer这样的核心类型自动绑定""或0,因为有人注入了它们.
| 归档时间: |
|
| 查看次数: |
815 次 |
| 最近记录: |