Scala Play Framework - 控制器作为类或单例

时间:2015-07-11 14:46:27

标签: scala playframework playframework-2.4

我正在为Scala尝试Play 2.4.2,我不清楚控制器是应该被定义为类还是单例。文档声明:

  

Controller只不过是一个生成的单例对象   行动价值。

但是代码示例显示:

class Application extends Controller { ... }

为了进一步复杂化,如果我定义一个类,intellij会给我一个警告:

intellij warning

但是,如果我使用单例,我会收到编译错误(但没有警告):

package controllers

import play.api._
import play.api.mvc._

object Application extends Controller { ... }
  

错误:(6,-1)播放2编译器:   / Users / Toby / IdeaProjects / play-scala / conf / routes:6:type application is   不是包控制器的成员

哪种方法是正确的?

1 个答案:

答案 0 :(得分:10)

如果使用静态路由器,您的控制器应该是对象。静态是Play 2.4中的默认路由器,与Play 2.3及之前的行为相同。

如果使用Play 2.4中新增的注入路由器,则可以将控制器转换为类。您需要在build.sbt

中启用注入的路由器
routesGenerator := InjectedRoutesGenerator

更新:注入的路由器现在是Play 2.5中的默认路由器