subcut
https://github.com/dickwall/subcut
ドキュメント
ソース
バイナリ非互換性
scalaのバイナリ非互換性のため、コンパイル済jarとしては2.8.0用、2.8.1用、2.9.0用が用意されている。
http://scala-tools.org/repo-releases/org/scala-tools/
評価
- このフレームワークはDIというよりもむしろサービスロケータに近い。ただ、DIはもはや無用の長物と考えているのでそれでよい。
- bindingModuleの受け渡しにimplicitパラメータを用いているところは非常に評価できる。オブジェクトの取得や生成には必ずこれが必要になるものの、常に明示的に受け渡すのは面倒かと思われる。
- しかし、その一方でシステムを構成するすべてのクラスがこのカタチになっていなければならなくなる。一つでもそうでないものがあると、チェインが断ち切られてしまう。もちろん他のDIフレームワークも同じ欠点を持つが。
- デフォルトを指定できるのは良いし、そこで引数指定ができるのもよいが、モックの方は引数が指定できない。つまり、そのままではcontextual injectionはできない。また、この違いがあると、テスト時と本番時の動作の違いが生まれてしまい、うっかりすればテストにならない可能性もある。