,我不是在这里征求意见,而是询问事实,
我想选一个新的DI。我和Guice有过一些经验。总的来说,我想说,它的一个优点是,当您从scala中需要集成Java时,Guice就完成了这一工作。因此,对于互操作性来说,这是一个明显的好处。
如果我们把这个互操作性问题放在一边,谁能给我一个简单的比较
斯卡拉迪,盖斯,麦考尔?
我对头皮的理解还很新鲜。我发现一件令人惊讶的事情是,必须通过一个隐式参数在喷射器周围移动。我从没有在guice做过这样的事。我要么将主程序中的所有内容连接起来,要么使用辅助注入,从而将工厂传递给需要某些特定实例的类。
如果有人能进一步详细说明这一设计选择,我将不胜感激。
非常感谢,
-M-
下面是我在macWire中发现的一些奇怪的东西:
trait Interf {
def name:String
}
class InterfImpl(val name:String) extends Interf
trait AModule {
import com.softwaremill.macwire.MacwireMacros._
//lazy val aName: String = "aName"
lazy val theInterf: Interf = wire[InterfImpl]
}
object injector extends AModule
println(injector.theInterf.name)我得到了一个奇怪的价值。我不知道macWire在那个级别做什么。我想它可能会产生编译错误什么的。实际上,我没有给出任何字符串值。
发布于 2014-08-20 11:25:25
为了在Scala中有一个可靠的和编译时间安全的DI,您还可以使用Cake模式(只是谷歌的"scala蛋糕模式“)。
https://stackoverflow.com/questions/25401653
复制相似问题