Scala 启动播放应用程序时的代码入口点

Scala 启动播放应用程序时的代码入口点,scala,playframework,Scala,Playframework,这是我编写的第一个web应用程序,所以也许这个问题对你们中的一些人来说很明显,但我在网站上没有找到任何东西。查看starter应用程序时,代码的一部分如下所示: package controllers import javax.inject._ import play.api._ import play.api.mvc._ @Singleton class HomeController @Inject()(val controllerComponents: ControllerCompone

这是我编写的第一个web应用程序,所以也许这个问题对你们中的一些人来说很明显,但我在网站上没有找到任何东西。查看starter应用程序时,代码的一部分如下所示:

package controllers

import javax.inject._
import play.api._
import play.api.mvc._

@Singleton
class HomeController @Inject()(val controllerComponents: ControllerComponents) extends BaseController {
  def index() = Action { implicit request: Request[AnyContent] =>
    Ok(views.html.index())
  }
}


所以,现在我想知道,我的
controllerComponents
来自哪里?我的申请从哪里开始?通常,我可以查找我的
main
方法或
extensed应用程序
,但在这里我真的不知道这一个或在游戏中,一般来说,我从哪里获得我的值。

简短的回答-在play Framework应用程序中公开的是no
main
方法。它对开发人员是隐藏的,所以框架为您完成所有应用程序启动工作:依赖项注入布线、创建外部资源(例如,在
slick
或其他可插入资源的情况下创建数据库连接)、端口侦听启动等。这种方法也称为:

不要打电话给我们,我们会打电话给你

如果您需要控制应用程序生命周期,下一步可能会对您有所帮助:


另外,如果您想更精确地控制应用程序加载过程,可能需要创建自己的
ApplicationLoader
,正如本节所述:

play framework-2.0怎么样?我的意思是我们如何处理它的启动和停止方法?由于我的onStart和onStop方法没有在全局类中调用。@Hafiz Hamza,请原谅,延迟回复。很抱歉,我没有使用2.0版本,但我非常确定,应该有类似的机制。