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

7 scala playframework playframework-2.4

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

Controller只不过是一个生成Action值的单例对象.

但是代码示例显示:

class Application extends Controller { ... }
Run Code Online (Sandbox Code Playgroud)

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

intellij警告

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

package controllers

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

object Application extends Controller { ... }
Run Code Online (Sandbox Code Playgroud)

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

哪种方法是正确的?

dwi*_*ern 10

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

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

routesGenerator := InjectedRoutesGenerator
Run Code Online (Sandbox Code Playgroud)

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