Ich versuche zu spielen Framework zu lernen. Ich möchte die Lifecycle-Callbacks des Play-Frameworks in meiner Anwendung implementieren. Nun sah ich, dass es leicht Global mit getan werden kann unter:Wie implementiert man die Lifecycle-Callbacks von Spiel-Framework (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...")
}
}
Aber es hat sich in der Spiel Rahmen (2.5.x) veraltet. Und sie bieten eifrige Bindung für onStart
Rückrufe und für onStop
und onError
gibt es andere Mechanismen. Ich schaute in die Dokumentation der Version 2.5.x und sah einen Code wie folgt:
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
}
}
Aber leider konnte ich es nicht verstehen. Bei der Verwendung von GlobalSettings war es einfach, die Lebenszyklusrückrufe zu implementieren. Angenommen, ich werde nur eine Logger-Information in den Lebenszyklus-Callbacks implementieren. Keine komplexen Codes.
Wie kann ich dies für Start, Stop und Fehlerrückrufe in 2.5.x implementieren?
Ich verstehe diese Linie bind (classOf [Hallo]). Zu (classOf [EnglishHello]). AsEagerSingleton. Kannst du es im Detail erklären wie zB was die Hello-Klasse und warum zu verwenden ist (classOf [EnglishHello]) und was hier gemacht wird, indem du diese Zeile schreibst ?? Ich bin neu in diesem Rahmen. Kannst du es einfacher erklären? –
Das bedeutet, wenn Sie eine Instanz von 'Hello' anfordern (zB.' Klasse Bye @Inject() (h: Hallo) {..} ') wird eine Instanz von' EnglishHello' injiziert (übergeben). Erfahren Sie mehr darüber, wie die Abhängigkeitsinjektion in diesem Vortrag von dem Schöpfer von guice nützlich sein kann: https://www.youtube.com/watch?v=0iSB0L9avmg – rethab
Wie können Sie Unit-Klassen testen, die einen ApplicationLifecycle-Parameter verwenden? – Blankman