我需要访问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 = ???
...
}
答案 0 :(得分:1)
您只需将actor注入任何组件构造函数即可访问actorSystem。您将可以访问由play创建的actorSystem,您无需进行任何提供者体操。
例如,我需要在我的HomeController中访问actor系统。所以,我只是注入我的HomeController构造函数。
class HomeController @Inject() (actorSystem: ActorSystem) extends Controller {
def index = Ok("bye!")
}