【问题标题】:Entry point of the code when starting a play application启动播放应用程序时的代码入口点
【发布时间】:2019-12-27 14:40:38
【问题描述】:

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

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 方法或extends App,但在这里我真的不知道这个或在哪里发挥作用,一般来说,我从哪里得到我的值。

【问题讨论】:

    标签: scala playframework


    【解决方案1】:

    简短的回答 - 在 Play Framework 应用程序中没有公开 main 方法。它对开发人员隐藏,因此框架会为您完成所有应用程序启动工作:依赖注入连接、外部资源创建(例如,slick 或其他可插入资源的数据库连接)、端口监听启动等。这种方法也称为 @ 987654321@:

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

    如果您需要控制应用程序生命周期,也许下一个对您有帮助:https://www.playframework.com/documentation/latest/api/scala/play/api/inject/ApplicationLifecycle.html

    此外,如果您希望更精确地控制应用程序加载过程,您可能需要创建自己的 ApplicationLoader,如本节所述:https://www.playframework.com/documentation/latest/api/scala/play/api/inject/ApplicationLifecycle.html

    【讨论】:

    • play framework-2.0怎么样?我的意思是我们如何处理它的启动、停止方法?因为我的 onStart 和 onStop 方法没有在 Global 类中调用。
    • @Hafiz Hamza 请原谅我的延迟回复。对不起,我没有使用2.0版本,但我很确定,应该有类似的机制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多