2015-05-22 175 views

回答

3

一個可能的解決方案是創建一個新的吉斯模塊,給您新的路由器綁定:

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" 
+0

根據https://www.playframework.com/documentation/2.4.x/ScalaRouting:你是否還需要在sbt fil中添加以下語句:; routesGenerator:= InjectedRoutesGenerator?你能指出我是如何定製自定義路線的嗎?我鏈接的文檔沒有它。 – 0fnt

+0

恕我直言,你可以玩「組件」來取代注入的依賴關係(https://www.playframework.com/documentation/2.4.x/ScalaCompileTimeDependencyInjection)。這樣你只需編寫新的ApplicationLoader,在application.conf中引用它。無需編寫guice模塊。同樣的事情,如果你想取代MessageApi – iwalktheline