在Play中定义全局变量的最佳方法! 2.0申请

时间:2012-06-18 22:17:48

标签: scala playframework playframework-2.0

在游戏中! 2.0,可以使用Global作为记录hereGlobal需要位于默认(空)包中。

我的应用程序中也需要全局变量,其中一些需要可用于Global中的方法。因此,我把它们放在Global.scala中就像这样:

package object globals {
  lazy val foo = Play.maybeApplication.flatMap(_.configuration.getString("foo")).getOrElse("default_value_of_foo")
}

然后我在我的控制器中使用它:

globals.foo

有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

我认为这个问题更多是关于通用软件设计而不是Play Framework。如果你真的需要一堆随机属性,为什么不创建自己的对象?

object Configuration {
    val timeout = Play.maybeApplication.flatMap(
                      _.configuration.getString("timeout")
                      ).getOrElse(0))
}

但通常这些值属于正在配置的其他逻辑实体。

答案 1 :(得分:0)

我在使用Global作为我的应用的单身人士时遇到了问题。我认为从控制器访问单例也会遇到一些问题(参见this post)。

但是你可以在你的一个软件包中创建自己的单例,并按照计划进行访问。