2015-05-22 3 views

ответ

3

Одним из возможных решений было бы создать новый модуль Guice, чтобы связать свой новый маршрутизатор:

class RouterModule extends AbstractModule { 

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

Затем определить новый Application Loader, который перекроет по умолчанию настроен маршрутизатор с, используя только что созданный модуль :

class MyApplicationLoader extends GuiceApplicationLoader with GuiceableModuleConversions { 

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

И использовать вновь созданный загрузчик приложений, вместо используемого по умолчанию, в application.conf:

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

За https://www.playframework.com/documentation/2.4.x/ScalaRouting: вам также нужно добавить следующую инструкцию в sbt fil :; routesGenerator: = InjectedRoutesGenerator? Можете ли вы указать мне на документ, как на самом деле написана обычная трасса? У документа, к которому я привязан, его нет. – 0fnt

+0

IMHO вы можете использовать «Компоненты» для замены вложенных зависимостей (https://www.playframework.com/documentation/2.4.x/ScalaCompileTimeDependencyInjection). Таким образом, вам просто нужно написать новый ApplicationLoader, ссылаться на него в application.conf. Не нужно писать модуль guice. То же самое, если вы хотите заменить MessageApi – iwalktheline