2012-06-18 14 views
12

¿Cómo creo un objeto/variable global en Play Framework 2.0 utilizando Scala?Cómo crear una variable global con Play Framework 2.0

Quiero crear un objeto que una vez instanciado, puede persistir entre múltiples acciones de controlador para que las diferentes acciones puedan seguir llamando al mismo objeto (porque inicializar el objeto es muy caro).

¿Esto es posible sin almacenarlo en la base de datos? He intentado pegar el objeto en un objeto global para el método onStart como se muestra aquí:

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

Esta fue mi código:

(en la carpeta raíz de la aplicación)

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ó.

+0

Por favor muestra el código que has probado. He utilizado con éxito Global (debe estar en el paquete predeterminado). – opyate

+0

En realidad, puedo tener una respuesta en mi [pregunta relacionada] (http://stackoverflow.com/questions/11091902/best-way-to-define-globals-in-a-play-2-0-application), pero me pregunto si hay una mejor manera. – opyate

+0

¡Gracias, su código en la pregunta relacionada funciona para mí! También cambié mi pregunta para mostrar qué código tenía. – wynnch

Respuesta

15

Si sus variables globales también tienen que estar a disposición de los métodos de Global, ponerlos en Global.scala así:

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 utilizarlo en sus controladores de la siguiente manera:

println(globals.abc) 
globals.someActor ! SomeMessage 

aCTUALIZACIÓN

La documentación se ha actualizado desde cómo añadir Global.scala en un idiomat ic ¡Juega! manera, con documentos para Scala y Java.

+1

¿Sabes cómo hacerlo en Java? – JhovaniC

Cuestiones relacionadas