【问题标题】:Best way to define globals in a Play! 2.0 application在 Play 中定义全局变量的最佳方式! 2.0应用
【发布时间】:2012-06-18 22:17:47
【问题描述】:

在游戏中! 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

有没有更好的办法?

【问题讨论】:

    标签: scala playframework playframework-2.0


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      但您可以在其中一个包中创建自己的单例,并按照您的计划访问它。

      【讨论】:

        猜你喜欢
        • 2010-10-01
        • 2022-01-01
        • 2014-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-18
        • 2017-04-06
        相关资源
        最近更新 更多