我最近从SubCut切换到了Scaldi,并且我找到了一个未记录/缺失的功能:
在SubCut中,当您定义绑定时,您可以choose between different binding modes - toSingle
,toProvider
,to moduleInstanceOf
,toModuleSingle
来确定是否注入了实例将创建一次,或每次执行绑定。我没有看到Scaldi documentation中明确定义的类似行为,所以我想确保理解Scaldi中可以实现的不同行为:
默认情况下,to
方法是惰性的,并在第一次“请求”时创建注入的实例。在the api中有一个toNonLazy
,我猜想在第一次“请求”之前创建实例。并且有一个toProvider
,在下面的例子中......
bind [Widget] toProvider new ParticularWidget()
...每次在ParticularWidget
中注入时都会创建一个新的Injectable
。
我是否正确理解了这一点?
答案 0 :(得分:3)
是的,它完全按照您的描述运作。如果使用toProvider
定义绑定,则inject将始终创建新实例。
您可以在此规范中查看其行为:
https://github.com/scaldi/scaldi/blob/master/src/test/scala/scaldi/WordBinderSpec.scala#L100
您可以在文档中找到更多信息: