2

最近、SubCut から Scaldi に切り替えましたが、文書化されていない/不足している機能があります。

SubCut では、バインディングを定義するときに、さまざまなバインディング モード( toSingletoProviderto moduleInstanceOf、 )から選択できますtoModuleSingle。これらは、注入されたインスタンスを 1 回作成するか、バインドを実行するたびに作成するかを決定します。Scaldi のドキュメントで明示的に定義されている類似の動作が見当たらないので、Scaldi でさまざまな動作を実現する方法を理解していることを確認したいと思います。

デフォルトでは、toメソッドは遅延しており、最初に「要求」されたときに注入されたインスタンスを作成します。初めて「リクエスト」される前でも、インスタンスを作成すると思われるAPItoNonLazyがAPIにあります。そして、次の例では...toProvider

bind [Widget] toProvider new ParticularWidget()

ParticularWidget...に注入されるたびに新しいを作成しますInjectable

私はこれを正しく理解していますか?

4

1 に答える 1

3

はい、あなたが説明したとおりに機能します。binding が で定義されている場合toProvider、inject は常に新しいインスタンスを作成します。

この仕様で実際の動作を確認できます。

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


アップデート

詳細については、次のドキュメントを参照してください。

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

于 2013-11-09T16:59:53.793 に答える