Я использую Play 2.4. Я хотел бы заменить маршрутизатор по умолчанию своим собственным классом, используя новую функцию динамического внедрения зависимостей. Каковы шаги для этого?
Пользовательский маршрутизатор в Playframework 2.4
Ответы (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
Согласно playframework.com/documentation/2.4.x/ScalaRouting: вы также необходимо добавить следующее утверждение в файл sbt:; routeGenerator := InjectedRoutesGenerator? Можете ли вы указать мне документ о том, как на самом деле написан пользовательский маршрут? В документе, на который я ссылался, его нет.
- person 0fnt; 22.11.2015
ИМХО, вы можете воспользоваться игровыми компонентами для замены внедренных зависимостей (playframework.com/documentation/2.4. х/а>). Таким образом, вам просто нужно написать новый ApplicationLoader, указать его в application.conf. Не нужно писать модуль guice. То же самое, если вы хотите заменить MessageApi
- person kheraud; 11.12.2015