如何从模块中访问Play 2.5中使用的actor系统

时间:2017-10-13 15:39:00

标签: scala playframework akka

我需要访问Play Framework 2.5在Module课程中使用的默认actor系统。

我看到ActorSystemProvider上有一个方法可以解决这个问题:

@Singleton
class ActorSystemProvider @Inject()(environment: Environment, configuration: Configuration, applicationLifecycle: ApplicationLifecycle) extends Provider[ActorSystem] {
  private val logger = Logger(classOf[ActorSystemProvider])

  lazy val get: ActorSystem = {
    val (system, stopHook) = ActorSystemProvider.start(environment.classLoader, configuration)
    applicationLifecycle.addStopHook(stopHook)
    system
  }
}

但是如何在我的Module课程中访问此课程?

例如:

class Module extends AbstractModule {
  val playSystem: ActorSytem = ???  
  ...
}

1 个答案:

答案 0 :(得分:1)

您只需将actor注入任何组件构造函数即可访问actorSystem。您将可以访问由play创建的actorSystem,您无需进行任何提供者体操。

例如,我需要在我的HomeController中访问actor系统。所以,我只是注入我的HomeController构造函数。

class HomeController @Inject() (actorSystem: ActorSystem) extends Controller {
  def index = Ok("bye!")
}