2

利用可能なドキュメントに基づくと、このタスクは簡単に思えますが、私はこれについて数日間壁に頭を悩ませてきましたが、単純なモジュール間の依存関係に対してはまだ機能させることができません...

縮小された例を次に示します。

trait Bla {
  def m: String
}

class BlaImpl(implicit val bindingModule: BindingModule) extends Bla with Injectable {
  val s = inject[String]('bla)
  def m = "got " + s
}

object Program extends App with Injectable {
  implicit val bindingModule =
    new NewBindingModule({ implicit module ⇒ module.bind[Bla] toSingle { new BlaImpl } }) ~
      new NewBindingModule(_.bind[String] idBy 'bla toSingle "bla!")
  val bla = inject[Bla]
  assert(bla.m == "got bla!")
}

BlaImpl インスタンスをビルドしようとすると、このコードを実行すると次のエラーで失敗します。

 org.scala_tools.subcut.inject.BindingException: No binding for key BindingKey(java.lang.String,Some(bla))

デバッグは、BlaImpl のコンストラクターに渡されたバインディング モジュールのバインディングに 'bla String が含まれておらず、Program.bindingModule.bindings にすべてのバインディング (必要なストリングを含む) があることを示しています。

同様の他の質問を見たことがありますが、それは構成のみを参照しており、モジュールの境界を越える依存関係については言及していません。

私は何を間違っていますか?

4

1 に答える 1