scala - 使用 Akka 进行依赖注入(inject)

标签 scala dependency-injection akka actor

我在我的应用程序中经常使用 Guice。最近我开始学习 akka actor,并想用它重构我的应用程序。

然而,我已经想知道我所有的 guice 将如何与 Actor 一起工作。我继续在谷歌上搜索,它有点乱。

我在该主题上找到的最新文档是论文:

http://letitcrash.com/post/55958814293/akka-dependency-injection

http://eng.42go.com/tag/guice/

不提倡同样的事情。

我必须承认我仍然需要大量阅读,我才刚刚开始学习 akka。我做了很少的例子和很少的事情,但我不想深入了解以后会遇到很多问题。

所以我的问题是截至今天,关于如何将 Akka Actors 与依赖注入(inject)一起使用的共识是什么。

什么样的注入(inject)是可能的?我们可以将 Actor 与对象/其他 Actor /....

无论如何,请以简洁的方式概述一些可以帮助我理解什么是可能的以及什么是最佳实践的东西?

最佳答案

我知道您在 Akka 中使用 Guice 和 Scala,但 Typesafe 提供了 tutorial使用 Spring 和 Java 描述 Akka 中的工作方式。这可以为理解依赖注入(inject)如何适应 Actor 提供一个很好的起点。您的情况的生命周期。

同时,这里是他们的 documentation 中的一些示例代码使用工厂方法注入(inject)构造函数参数:

class DependencyInjector(applicationContext: AnyRef, beanName: String) extends IndirectActorProducer {
  override def actorClass = classOf[Actor]
  override def produce = // obtain fresh Actor instance from DI framework ...
}
val actorRef = system.actorOf(Props(classOf[DependencyInjector], applicationContext, "hello"), "helloBean")

Here是 Typesafe 就此事编制的一些指南。

最后,请注意文档中的以下内容:

“使用依赖注入(inject)框架时,actor bean 不得 具有单例范围。”

关于scala - 使用 Akka 进行依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20875368/

相关文章:

scala - akka 中的 -Dconfig.resource 和 -Dconfig.file 有什么区别?

scala - 用抽象类型交换类型参数

scala - 使用 Typesafe Config 的 ConfigFactory 在 build.sbt 中设置关键设置?

scala - Scala 案例类可以排除 setter 吗?

spring - 将多个继承自共享接口(interface)的 Spring bean 注入(inject)到服务中的数组中

java - CDI 可以减少到 Java SE 吗?

model-view-controller - 如何避免将依赖项注入(inject)对象以便它可以传递它们?

scala - Akka HTTP 如何使用 Content-Type application/x-www-form-urlencoded 发布 singleRequest

java.lang.NoClassDefFoundError : scala/Predef$any2stringadd$ 错误

scala - 如何从 Int 或 Byte 初始化枚举?