2012-06-18 35 views
3

在Play! 2.0,可以使用Global作为记录hereGlobal需要位于默认(空)包中。在Play中定义全局变量的最佳方式! 2.0应用程序

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

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

然后,我用它在我的控制器是这样的:

globals.foo 

有没有更好的办法?

回答

0

我在使用Global作为我的应用程序的单例时遇到了问题。我想你也会遇到一些问题,从你的控制器访问单例(见this post)。

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

1

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

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

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

相关问题