2014-09-30 60 views
3

我正在學習Play!框架(2.3.x)。我感到困惑的「@」字符在控制器的前面路由定義的含義是這樣的:播放2.x @登錄路線定義

POST /myresource/:id/custom @controllers.MyResource.custom(id: Long) 

雖然我可以從我在看過這個上下文推斷,它可能有用確切的控制器實現(對象vs類)。或者我完全錯了嗎?我在文檔中找不到任何內容,我所看到的代碼並不完全是解釋性的。誰能解釋一下?

回答

4

按照documentation

播放支持產生兩個類型的路由器,一個是一個依賴 注入路由器,另一種是靜態路由器。默認值是 靜態路由,但是如果您創建使用 播放種子激活模板的新的Play應用程序,你的項目將包括在build.sbt以下 配置告訴它使用的注射路由器:

routesGenerator := InjectedRoutesGenerator 

的Play的文檔中的代碼示例假定您正在使用注入路由生成器 。如果你不使用這個,你可以簡單地調整靜態路由發生器 的代碼樣本,方法是將路由的控制器調用部分加上 或@符號,或者聲明每個控制器爲objectclass

Java中的等價物將是靜態的與非靜態的。

+0

好的,我想解釋一下。 DI的東西必須是新的2.4,2.3.x的文檔沒有提及任何東西(https://www.playframework.com/documentation/2.3.x/ScalaRouting) – kliron 2014-09-30 15:37:23

+3

只是DI的東西不是新的2.4,在2.3-它指的是通過Global.getControllerInstance獲得實例的控制器,參見https://www.playframework.com/documentation/2.3.0/JavaInjection和https://www.playframework.com/documentation/2.3.0/ ScalaDependencyInjection – Jean 2014-09-30 15:47:04

+0

@Jean謝謝。還沒有通過DI文檔。路由部分中的交叉引用會爲我節省大量時間和不必要的SO問題:-) – kliron 2014-09-30 16:38:31