如何在scala中进行依赖注入?

Fab*_*ian 74 dependency-injection scala

除了java之外,我还在学习scala的开始,我没有得到它如何应该在那里做DI?可以或者我应该使用现有的DI库,是手动完成还是其他方式?

Dan*_*ory 59

标准Java DI框架通常可以与Scala一起使用,但您也可以使用语言结构来实现相同的效果,而无需外部依赖.

  • fwiw,那篇文章是我第一次开始学习Scala时最强烈的灵感之一. (4认同)

小智 14

专门针对Scala的新依赖注入库是Dick Wall的SubCut.

Dan Story的回答中引用的JonasBonér文章强调了编译时绑定实例和静态注入(通过混合),SubCut基于不可变模块的运行时初始化,以及通过类型,字符串名称查询绑定模块的动态注入,或scala.Symbol的名字.

您可以在GettingStarted文档中阅读有关与Cake模式进行比较的更多信息.


ada*_*amw 9

依赖注入本身可以在没有任何工具,框架或容器支持的情况下完成.您只需new要从代码中删除s并将它们移动到构造函数中.剩下的一个乏味的部分是在"世界末日"对象进行连接,其中容器有很多帮助.

虽然使用Scala的2.10宏,但您可以在编译时生成接线代码并具有自动布线和类型安全性.

请参阅Scala指南中依赖注入

  • 因此很少有人意识到我将其用作面试问题. (2认同)