利用可能なドキュメントに基づくと、このタスクは簡単に思えますが、私はこれについて数日間壁に頭を悩ませてきましたが、単純なモジュール間の依存関係に対してはまだ機能させることができません...
縮小された例を次に示します。
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 にすべてのバインディング (必要なストリングを含む) があることを示しています。
同様の他の質問を見たことがありますが、それは構成のみを参照しており、モジュールの境界を越える依存関係については言及していません。
私は何を間違っていますか?