【问题标题】:Best way to define globals in a Play! 2.0 application在 Play 中定义全局变量的最佳方式! 2.0应用
【发布时间】:2012-06-18 22:17:47
【问题描述】:
在游戏中! 2.0,可以使用Global,如记录的here。 Global 需要在默认(空)包中。
我的应用程序中还需要全局变量,其中一些需要可用于Global 中的方法。因此,我将它们放在 Global.scala 中,如下所示:
package object globals {
lazy val foo = Play.maybeApplication.flatMap(_.configuration.getString("foo")).getOrElse("default_value_of_foo")
}
然后我像这样在我的控制器中使用它:
globals.foo
有没有更好的办法?
【问题讨论】:
标签:
scala
playframework
playframework-2.0
【解决方案1】:
我认为这个问题更多的是关于一般软件设计,而不是关于 Play Framework。如果你真的需要一堆随机属性,为什么不创建自己的对象呢?
object Configuration {
val timeout = Play.maybeApplication.flatMap(
_.configuration.getString("timeout")
).getOrElse(0))
}
但通常这些值属于正在配置的其他一些逻辑实体。
【解决方案2】:
我在使用 Global 作为我的应用程序的单例时遇到了问题。我认为从控制器访问单例也会遇到一些问题(请参阅this post)。
但您可以在其中一个包中创建自己的单例,并按照您的计划访问它。