7
我正在使用Play 2.4。我想用我自己的類,使用新的動態依賴注入播放功能替換默認路由器。有什麼步驟來做到這一點?Playframework 2.4中的自定義路由器
我正在使用Play 2.4。我想用我自己的類,使用新的動態依賴注入播放功能替換默認路由器。有什麼步驟來做到這一點?Playframework 2.4中的自定義路由器
一個可能的解決方案是創建一個新的吉斯模塊,給您新的路由器綁定:
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"
根據https://www.playframework.com/documentation/2.4.x/ScalaRouting:你是否還需要在sbt fil中添加以下語句:; routesGenerator:= InjectedRoutesGenerator?你能指出我是如何定製自定義路線的嗎?我鏈接的文檔沒有它。 – 0fnt
恕我直言,你可以玩「組件」來取代注入的依賴關係(https://www.playframework.com/documentation/2.4.x/ScalaCompileTimeDependencyInjection)。這樣你只需編寫新的ApplicationLoader,在application.conf中引用它。無需編寫guice模塊。同樣的事情,如果你想取代MessageApi – iwalktheline