Scala 如何访问通过guice创建的akka系统?
因此,我在这里遵循模板: 我已将此代码移植到2.4版的Play应用程序中 现在,我可以创建actor系统,在全局类中创建actor,并将初始消息发送给actors。我还设置了一些途径,试图与某些演员交谈并获得地位,但我无法,因为我无法访问原始的演员系统 我怎样才能做到这一点?我认为在较旧的游戏版本中,我们有getControllerInstance;用于以下情况:Scala 如何访问通过guice创建的akka系统?,scala,playframework,guice,playframework-2.4,Scala,Playframework,Guice,Playframework 2.4,因此,我在这里遵循模板: 我已将此代码移植到2.4版的Play应用程序中 现在,我可以创建actor系统,在全局类中创建actor,并将初始消息发送给actors。我还设置了一些途径,试图与某些演员交谈并获得地位,但我无法,因为我无法访问原始的演员系统 我怎样才能做到这一点?我认为在较旧的游戏版本中,我们有getControllerInstance;用于以下情况: /** * Controllers must be resolved through the application c
/**
* Controllers must be resolved through the application context. There is a special method of GlobalSettings
* that we can override to resolve a given controller. This resolution is required by the Play router.
*/
override def getControllerInstance[A](controllerClass: Class[A]): A = injector.getInstance(controllerClass)
由此,我们可以在控制器中注入某些依赖项。现在,这已经被删除,我们不能再这样做。有办法解决这个问题吗?
take in to attention@Singleton此处仅存储对actor的引用,而不是ActorSystem
Play应用程序定义了一个特殊的参与者系统,供用户使用
应用此actor系统遵循应用程序生命周期和
应用程序重新启动时自动重新启动
我有点困惑。你为什么要创建一个新的Akka系统?Play已经包含一个,您可以通过
Akka.system()
访问它。
import play.api.mvc._
import akka.actor._
import javax.inject._
import actors.HelloActor
@Singleton
class Application @Inject() (system: ActorSystem) extends Controller {
val helloActor = system.actorOf(HelloActor.props, "hello-actor")
//...
}