首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala依赖注入

Scala依赖注入
EN

Stack Overflow用户
提问于 2014-08-20 09:49:14
回答 1查看 972关注 0票数 4

,我不是在这里征求意见,而是询问事实,

我想选一个新的DI。我和Guice有过一些经验。总的来说,我想说,它的一个优点是,当您从scala中需要集成Java时,Guice就完成了这一工作。因此,对于互操作性来说,这是一个明显的好处。

如果我们把这个互操作性问题放在一边,谁能给我一个简单的比较

斯卡拉迪,盖斯,麦考尔?

我对头皮的理解还很新鲜。我发现一件令人惊讶的事情是,必须通过一个隐式参数在喷射器周围移动。我从没有在guice做过这样的事。我要么将主程序中的所有内容连接起来,要么使用辅助注入,从而将工厂传递给需要某些特定实例的类。

如果有人能进一步详细说明这一设计选择,我将不胜感激。

非常感谢,

-M-

下面是我在macWire中发现的一些奇怪的东西:

代码语言:javascript
复制
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在那个级别做什么。我想它可能会产生编译错误什么的。实际上,我没有给出任何字符串值。

EN

回答 1

Stack Overflow用户

发布于 2014-08-20 11:25:25

  • Guice:运行时典型的DI (基于反射)
  • Macwire:使用Scala宏在编译前生成连接(编译时安全的DI!)
  • 斯卡拉迪:从来没有用过这个。

为了在Scala中有一个可靠的和编译时间安全的DI,您还可以使用Cake模式(只是谷歌的"scala蛋糕模式“)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25401653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档