2015-05-22 12 views

Antwort

3

Eine mögliche Lösung wäre, ein neues Guice-Modul, erstellen Sie Ihren neuen Router zu binden:

class RouterModule extends AbstractModule { 

    override def configure(): Unit = { 
    bind(classOf[Router]).to(classOf[CustomRouter]) 
    } 
} 

Dann definieren Sie eine neue Application Loader, der die Standard-konfigurierten Router außer Kraft gesetzt wird, durch das neu erstellte Modul :

class MyApplicationLoader extends GuiceApplicationLoader with GuiceableModuleConversions { 

    override protected def overrides(context: Context): Seq[GuiceableModule] = { 
    Seq(fromGuiceModule(new RouterModule)) ++ super.overrides(context) 
    } 
} 

Und die neu erstellte Anwendungslader, anstelle des Standard ein, in application.conf verwenden:

play.application.loader = "de.zalando.store.pdp.modules.MyApplicationLoader" 
+0

Per https://www.playframework.com/documentation/2.4.x/ScalaRouting: müssen Sie auch die folgende Anweisung in der sbt-Datei hinzufügen :; routesGenerator: = InjectedRoutesGenerator? Können Sie mich auf das Dokument verweisen, wie die benutzerdefinierte Route tatsächlich geschrieben ist? Das Dokument, das ich verlinkt habe, hat es nicht. – 0fnt

+0

IMHO können Sie spielen "Komponenten", um injizierte Abhängigkeiten zu ersetzen (https://www.playframework.com/documentation/2.4.x/ScalaCompileTimeDependencyInjection). Auf diese Weise müssen Sie nur den neuen ApplicationLoader schreiben und ihn in der application.conf referenzieren. Keine Notwendigkeit, das Guice-Modul zu schreiben. Das gleiche gilt, wenn Sie den MessageApi ersetzen möchten – iwalktheline