scala - Cómo crear una variable global con Play Framework 2.0
playframework playframework-2.0 (1)
Si sus globales también deben estar disponibles para los métodos en Global
, colóquelos en Global.scala de la siguiente manera:
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")
}
Y luego utilícelo en sus controladores de esta manera:
println(globals.abc)
globals.someActor ! SomeMessage
ACTUALIZAR
La documentación ha sido actualizada como agregar Global.scala
en un juego idiomático! manera, con documentos para Scala y Java .
¿Cómo creo un objeto / variable global en Play Framework 2.0 usando Scala?
Quiero crear un objeto que una vez instanciado, puede persistir entre múltiples acciones de controlador para que las diferentes acciones todavía puedan invocar el mismo objeto (porque inicializar el objeto es muy costoso).
¿Es esto posible sin almacenarlo en la base de datos? Traté de pegar el objeto en un objeto global para el método onStart como se muestra aquí:
http://www.playframework.org/documentation/2.0/ScalaGlobal
Este era mi código:
(en la carpeta de la aplicación raíz)
object Global extends GlobalSettings {
override def onStart(app:Application) {
var foo = new Foo
}
}
}
Y en mis acciones de controlador intento simplemente llamar a la variable por su nombre, pero no funcionó.