当前位置: 首页 > 知识库问答 >
问题:

Scala依赖注入

和嘉澍
2023-03-14

我要的不是意见而是事实

我正在尝试选择一个新的DI。我有一些Guice的经验。总的来说,我想说它的一个优点是,当从scala需要与Java集成时,Guice可以完成这项工作。所以对于互操作性来说,这是一个明显的优势。

如果我们抛开这个互操作性问题不谈,谁能给我简单的比较一下

scaladi,guice,Macwire?

我对了解烫伤症还是新手。我发现令人惊讶的一件事是必须通过隐式参数在喷油器周围移动的想法。我从来没有差点这样做过。我要么将所有东西都连接在我的主设备中,要么使用辅助注射,从而将工厂传递给需要一些特定实例的类。

如果有人能进一步阐述这个设计选择,我将不胜感激。

非常感谢,

-米-

这是一些奇怪的我发现与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在那个级别上做了什么。我认为它可能会产生编译错误什么的。事实上,我没有给出任何String值。

共有1个答案

文寒
2023-03-14
    < li>Guice:运行时的典型DI(基于反射) < li>Macwire:在编译之前使用Scala宏生成连接(编译时安全DI!) < li>scaladi:从没用过这个

要在Scala中获得可靠且编译时安全的DI,您还可以使用蛋糕模式(只需谷歌搜索“scala蛋糕模式”)

 类似资料:
  • 我是Scala和PlayFramework的新手,我正试图弄清楚如何进行依赖注入。我基本上想要一个将成为特征的文件,并将其注入控制器。我的问题是我的Controller类没有看到我的特性这是我的代码 个人资料性状 然后我尝试将其注入我的控制器 然而,我的控制器没有看到它,我试图按照这里的例子https://www . play framework . com/documentation/2.5 .

  • 试图创建一个自定义的,我可以通过Jersey注入到我的资源中。 这在本问题的Java中有涉及。我已经阅读了有关这方面的文档,这些文档也是用Java编写的。最后,GitHub中的一些代码涵盖了相同的主题(通过Dropwizard完成)。 这将全部编译,但在运行时失败,出现以下异常 我不知道是我在向Scala的转换中犯了错误,还是我在注册绑定器时做了错误的事情。

  • 我来自Java背景,也是函数范式的新手,所以请原谅我,我身上有OOP的味道。 我有一个特征名称付款处理程序 和 直到这里一切都很好,但是当我想拥有多个基于付款方式的支付网关时,问题就来了。最初我写了一个像 PaymentHandlerFactory 这样的 然后使用这个PaymentHandlerFactory获取guice注入的PayPal对象。但不知怎的,我觉得这不是正确的方法,于是我找到了同

  • 我有一个非常简单的场景可以使用 DI 解决,但我无法找到合适的示例/文档来帮助我完成。我是Scala/Guice世界的新手。 当前组件看起来像这样 现在,我在Foo和Bar之间有一个依赖项。所以,通常代码看起来像这样 其中只是返回。当然,为了简洁起见,我删除了工厂/助手。 我意识到,当我使用“new”时,这已经脱离了DI范式。我希望确保可以基于参数将Bar注入FooImpl。有点像使用工厂。我们如

  • 在React中,想做依赖注入(Dependency Injection)其实相当简单。请看下面这个例子: // Title.jsx export default function Title(props) { return <h1>{ props.title }</h1>; } // Header.jsx import Title from './Title.jsx'; export defa

  • 依赖注入 Dependency Injection is a strong mechanism, which helps us easily manage dependencies of our classes. It is very popular pattern in strongly typed languages like C# and Java. 依赖注入是一个很强大的机制,该机制可以帮