Пользовательский маршрутизатор в Playframework 2.4

Я использую Play 2.4. Я хотел бы заменить маршрутизатор по умолчанию своим собственным классом, используя новую функцию динамического внедрения зависимостей. Каковы шаги для этого?


person Danix    schedule 22.05.2015    source источник


Ответы (1)


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

class RouterModule extends AbstractModule {

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

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

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"
person Danix    schedule 22.05.2015
comment
Согласно playframework.com/documentation/2.4.x/ScalaRouting: вы также необходимо добавить следующее утверждение в файл sbt:; routeGenerator := InjectedRoutesGenerator? Можете ли вы указать мне документ о том, как на самом деле написан пользовательский маршрут? В документе, на который я ссылался, его нет. - person 0fnt; 22.11.2015