Play Framework:访问和操作全局变量

时间:2014-12-11 08:22:22

标签: scala playframework-2.2

我目前正在构建一个会计应用程序,现在我想坚持这个可以改变的“期末日期”。我相信我们可以使用全局变量,但我不知道如何这样做。我到目前为止尝试的是在application.conf中创建一个像application.date="2014/12/15"这样的变量。

此外,我不确定如何使用上述方法更改值。这个问题有什么好方法吗?

1 个答案:

答案 0 :(得分:3)

一种可行的方法是使用 GlobalScala 中初始化的 Singeleton对象

全局对象必须放在应用程序的scala-root中,或者通过application.conf进行配置。

Singleton for shared Data

<{1>}中的

(名称是免费的)

app/shared/Shared.scala

package shared object Shared { private var data: Int = 0 def setData(d: Int) : Unit = data = 0 def getData : Int = data } 中,您可以设置在应用程序启动时调用全局(您也可以在应用程序中放置一个名为application.conf的文件,默认情况下将使用该文件)

Global.scala

application.global= settings.Global shared.initial = 42

app/settings/Global.scala

在Play代码中获取或设置共享数据。

object Global extends GlobalSettings {
  override def onStart(app: Application) {
   // Here I use typesafe config to get config data out of application conf
   val cfg: Config = ConfigFactory.load()
   val initialValue = cfg.getInt(shared.initial)
   // set initial value for shared
   Shared.setData(initialValue)
  }
}