1
我目前正在遷移到Play 2.4並且在注入演員時遇到了問題。在啓動時向Play 2.4中的演員注入服務
我已經將演員創作從GlobalSettings.onStart
轉移到模塊。
模塊:
class MailerModule extends AbstractModule with AkkaGuiceSupport {
override def configure() = {
bindActor[Mailer]("mailer")
}
}
演員:
class Mailer @Inject() (service: MailService) extends Actor {
...
}
現在,當我啓動應用程序我創錯誤:Error injecting constructor, java.lang.RuntimeException: There is no started application at services.MailService.<init>(MailService.scala:14)
但是,如果我添加Logger
到演員類
class Mailer @Inject() (service: MailService) extends Actor {
Logger.info("Starting Mailer...")
...
}
沒有錯誤。我不知道爲什麼它會這樣。它看起來不是一個好的解決方案。是其他人嗎?
編輯:它不起作用。看起來它是非確定性的。我應該如何初始化它?
'MailService'擴展了'val wsClient = Play.current.injector.instanceOf [WSClient]'的特徵。我只需要使它成爲'懶惰的val'就行了。謝謝! – lowercase