2013-01-24 132 views
2

GlobalSettings上getControllerInstance的預期使用模式是什麼?沒有依賴注入框架可以使用它嗎?播放2.1 getControllerInstance用法?

簽名getControllerInstance[A](controllerClass: Class[A]): A

所以,從我個人理解,這被稱爲上與@前綴指定的任何路由,你必須返回類型的控制器(A)的一個實例。但是,如果AClass的參數化類型,則它在運行時受到類型擦除,是正確的?我怎麼知道哪個控制器類被要求?

回答

1

我發現看起來非常非斯卡拉的方式,但爲我工作。

override def getControllerInstance[A](controllerClass: Class[A]): A = { 
    if (controllerClass == classOf[CardsService]) ComponentsRegistry.cardsService.asInstanceOf[A] 
    else super.getControllerInstance(controllerClass) 
} 

我絕對認爲它很醜,很樂意看到更好的解決方案。

不幸的是,這裏不可能使用模式匹配來使這個代碼更具慣用性:How can I match classes in a Scala "match" statement?