我目前正在构建一个会计应用程序,现在我想坚持这个可以改变的“期末日期”。我相信我们可以使用全局变量,但我不知道如何这样做。我到目前为止尝试的是在application.conf
中创建一个像application.date="2014/12/15"
这样的变量。
此外,我不确定如何使用上述方法更改值。这个问题有什么好方法吗?
答案 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)
}
}