我在我的应用程序中经常使用 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/