我最近从SubCut切换到Scaldi,我发现有一个功能没有记录/缺失:
在 SubCut 中,定义绑定时,可以在不同的绑定模式之间进行选择 - toSingle
、toProvider
、to moduleInstanceOf
、toModuleSingle
,这些模式决定了是创建一次注入的实例,还是每次执行绑定时创建。我没有看到 Scaldi 文档中明确定义的类似行为,所以我想确保我了解如何在 Scaldi 中实现不同的行为:
默认情况下,to
方法是惰性的,并在第一次"请求"时创建注入的实例。api中有一个toNonLazy
,我想它甚至在第一次"请求"之前就创建了实例。还有一个toProvider
,在下面的示例中...
bind [Widget] toProvider new ParticularWidget()
。每次注入Injectable
时都会创建一个新ParticularWidget
.
我理解正确吗?
是的,它完全按照您的描述工作。如果使用 toProvider
定义绑定,则 inject 将始终创建新实例。
您可以在此规范中看到其实际行为:
https://github.com/scaldi/scaldi/blob/master/src/test/scala/scaldi/WordBinderSpec.scala#L100
更新
您可以在文档中找到更多信息:
http://scaldi.org/learn/#define-bindings