2015-05-22 16 views

Odpowiedz

3

Możliwym rozwiązaniem byłoby, aby utworzyć nowy moduł Guice, związać swój nowy router:

class RouterModule extends AbstractModule { 

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

następnie zdefiniować nową aplikację Ładowarka, która zastąpi domyślną skonfigurowany router za pomocą nowo utworzonego modułu :

class MyApplicationLoader extends GuiceApplicationLoader with GuiceableModuleConversions { 

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

i korzystać z nowo utworzonego ładowania aplikacji, zamiast domyślnego, w application.conf:

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

Na https://www.playframework.com/documentation/2.4.x/ScalaRouting: czy należy również dodać następującą instrukcję w pliku sbt fil :; routesGenerator: = InjectedRoutesGenerator? Czy możesz wskazać mi dokument dotyczący tego, jak właściwie została zapisana trasa niestandardowa? Dokument, który łączyłem, nie ma go. – 0fnt

+0

IMHO możesz skorzystać z gry "Komponenty", aby zastąpić wstrzyknięte zależności (https://www.playframework.com/documentation/2.4.x/ScalaCompileTimeDependencyInjection). W ten sposób wystarczy napisać nową aplikację ApplicationLoader, odwołać się do niej w pliku application.conf. Nie trzeba pisać modułu guice. To samo, jeśli chcesz zastąpić MessageApi – iwalktheline