如何在斯卡拉剧上开始代码执行! 框架应用程序?(How to execute on start

2019-08-16 16:28发布

我需要执行允许启动的应用程序的启动计划作业的代码,我该怎么办呢? 谢谢。

Answer 1:

使用Global哪个对象-如果使用-必须在默认包中定义:

object Global extends play.api.GlobalSettings {

  override def onStart(app: play.api.Application) {
    ...
  }

}

请记住,在开发模式,应用程序仅在第一次请求的负载,所以你必须触发启动进程的请求。


由于游戏框架2.6倍

要做到这一点,正确的方法是使用自定义模块与渴望结合:

import scala.concurrent.Future
import javax.inject._
import play.api.inject.ApplicationLifecycle

// This creates an `ApplicationStart` object once at start-up and registers hook for shut-down.
@Singleton
class ApplicationStart @Inject() (lifecycle: ApplicationLifecycle) {

  // Start up code here

  // Shut-down hook
  lifecycle.addStopHook { () =>
    Future.successful(())
  }
  //...
}
import com.google.inject.AbstractModule

class StartModule extends AbstractModule {
  override def configure() = {
    bind(classOf[ApplicationStart]).asEagerSingleton()
  }
}

见https://www.playframework.com/documentation/2.6.x/ScalaDependencyInjection#Eager-bindings



Answer 2:

我得到一个类似的错误。 就像@Leo说,需要在app /目录全局对象。

我唯一必须确保是改变“应用:应用”到“应用程序:play.api.Application”。

应用:应用程序所指的控制器包类的应用。



文章来源: How to execute on start code in scala Play! framework application?