我正在嘗試學習播放框架。我想在我的應用程序中實現播放框架的生命週期回調。現在我看到,它可以使用GlobalSettings下面很容易做到:如何實現播放框架的生命週期回調(2.5.x)
object Global extends GlobalSettings {
override def onStart(app: Application) {
Logger.info("Application has started")
}
override def onStop(app: Application) {
Logger.info("Application shutdown...")
}
}
但它在發揮框架(2.5.X)被棄用。並且他們提供了對onStart
回調的熱切綁定,對於onStop
和onError
還有其他機制。我查看了2.5.x版本的文檔,看到如下代碼:
import com.google.inject.AbstractModule
import com.google.inject.name.Names
class Module extends AbstractModule {
def configure() = {
bind(classOf[Hello])
.annotatedWith(Names.named("en"))
.to(classOf[EnglishHello]).asEagerSingleton
bind(classOf[Hello])
.annotatedWith(Names.named("de"))
.to(classOf[GermanHello]).asEagerSingleton
}
}
但是很不幸,我無法理解它。使用GlobalSettings時,很容易實現生命週期回調。假設我只是在生命週期回調中實現一個Logger信息。沒有複雜的代碼。
我如何實現這個啓動,停止和錯誤回調2.5.x?
我不理解此行綁定(classOf [Hello])。(classOf [EnglishHello])。asEagerSingleton。你可以詳細解釋它,例如什麼是Hello類,爲什麼要使用(classOf [EnglishHello])以及在這裏寫什麼是通過寫這行?我是這個框架的新手。你能以更簡單的方式解釋它嗎? –
它意味着每當你請求一個'Hello'實例時(例如'class Bye @Inject()(h:Hello){..}'),'EnglishHello'的一個實例將被注入(傳入)。瞭解更多關於依賴注入如何有益於Guice創建者的這次演講:https://www.youtube.com/watch?v = 0iSB0L9avmg – rethab
如何測試採用ApplicationLifecycle參數的類? – Blankman