Я использую Play 2.4. Я хотел бы заменить маршрутизатор по умолчанию своим собственным классом, используя новую функцию динамического зависимодействия впрыска. Каковы шаги для этого?Пользовательский маршрутизатор в Playframework 2.4
7
A
ответ
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"
За https://www.playframework.com/documentation/2.4.x/ScalaRouting: вам также нужно добавить следующую инструкцию в sbt fil :; routesGenerator: = InjectedRoutesGenerator? Можете ли вы указать мне на документ, как на самом деле написана обычная трасса? У документа, к которому я привязан, его нет. – 0fnt
IMHO вы можете использовать «Компоненты» для замены вложенных зависимостей (https://www.playframework.com/documentation/2.4.x/ScalaCompileTimeDependencyInjection). Таким образом, вам просто нужно написать новый ApplicationLoader, ссылаться на него в application.conf. Не нужно писать модуль guice. То же самое, если вы хотите заменить MessageApi – iwalktheline