2

I recently switched from SubCut to Scaldi and there's a feature I find undocumented/missing:

In SubCut, when you define a binding, you can choose between different binding modes - toSingle, toProvider, to moduleInstanceOf, toModuleSingle, which decide if the injected instances will be created once, or each time the bind is performed. I don't see the analogous behaviours explicitly defined in the Scaldi documentation, so I would like to make sure I understand how the different behaviours can be achieved in Scaldi:

By default the to method is lazy and creates the injected instance the first time it's "requested". There's a toNonLazy in the api which I guess creates the instance even before the first time it's "requested". And there's a toProvider, which in the following example...

bind [Widget] toProvider new ParticularWidget()

...would create a new ParticularWidget every time it is injected in an Injectable.

Am I understanding this correctly?

nietaki
  • 8,758
  • 2
  • 45
  • 56

1 Answers1

3

Yes, it works exactly as you described. If binding is defined with toProvider, then inject will always create new instances.

You can see its behavior in action in this spec:

https://github.com/scaldi/scaldi/blob/master/src/test/scala/scaldi/WordBinderSpec.scala#L100


Update

You can find more info in the documentation:

http://scaldi.org/learn/#define-bindings

tenshi
  • 26,268
  • 8
  • 76
  • 90