Подтвердить что ты не робот

Как создать глобальную переменную с Play Framework 2.0

Как создать глобальный объект/переменную в Play Framework 2.0 с помощью Scala?

Я хочу создать объект, который когда-то создавал экземпляр, может сохраняться между несколькими действиями контроллера, чтобы разные действия все равно могли вызывать один и тот же объект (потому что инициализация объекта очень дорога).

Возможно ли это, не сохраняя его в БД? Я попытался вставить объект в объект Global для метода onStart, как показано здесь:

http://www.playframework.org/documentation/2.0/ScalaGlobal

Это был мой код:

(в корневой папке приложения)

object Global extends GlobalSettings {

  override def onStart(app:Application) {
    var foo = new Foo
    }
  }

}

И в моих действиях контроллера я пытаюсь просто вызвать переменную по имени, но это не сработало.

4b9b3361

Ответ 1

Если ваши глобальные переменные также должны быть доступны для методов в Global, поместите их в Global.scala следующим образом:

package object globals {
  lazy val abc = Play.maybeApplication.flatMap(_.configuration.getString("abc")).getOrElse("default_value_of_abc")
  lazy val someActor = Akka.system.actorOf(Props[SomeActor], name = "someActor")
}

И затем используйте его в своих контроллерах следующим образом:

println(globals.abc)
globals.someActor ! SomeMessage

UPDATE

Документация с тех пор была обновлена, как добавить Global.scala в идиоматическую игру! путь с документами для Scala и Java.