В настоящее время я создаю приложение для бухгалтерского учета, теперь я хочу сохранить эту "дату окончания периода", которую можно изменить. Я считаю, что мы можем использовать глобальную переменную, однако я не знаю, как это сделать. До сих пор я пытался создать переменную в application.conf, подобную этой application.date="2014/12/15".
Более того, я не уверен, как изменить значение, используя описанный выше подход. Есть ли хороший подход к этой проблеме?
Ответ 1 · рейтинг 5 · Andreas Neumann
Возможный способ - использовать Singeleton Object, который инициализируется в Global.scala.
Глобальный объект должен находиться в корневом каталоге scala приложения или настраиваться через application.conf.
Синглтон для общих данных
в 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
In app/settings/Global.scala
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)
}
}
В коде воспроизведения, чтобы получить или установить общие данные.
import shared.Shared
Shared.getData
Shared.setData( 8 )