13

Play Framework 2.0 で Scala を使用してグローバル オブジェクト/変数を作成するにはどうすればよいですか?

一度インスタンス化されると、複数のコントローラー アクション間で永続化できるオブジェクトを作成して、異なるアクションが同じオブジェクトを呼び出すことができるようにしたいと考えています (オブジェクトの初期化には非常にコストがかかるため)。

DBに保存せずにこれは可能ですか?次に示すように、オブジェクトを onStart メソッドの Global オブジェクトに貼り付けてみました。

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

これは私のコードでした:

(ルート アプリケーション フォルダー内)

object Global extends GlobalSettings {

  override def onStart(app:Application) {
    var foo = new Foo
    }
  }

}

そして、コントローラーのアクションで、変数を名前で呼び出してみましたが、うまくいきませんでした。

4

1 に答える 1

15

グローバルもでメソッドを使用できるようにする必要がある場合はGlobal、次のようにGlobal.scalaに配置します。

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")
}

そして、次のようにコントローラーで使用します。

println(globals.abc)
globals.someActor ! SomeMessage

アップデート

その後、ドキュメントが更新さGlobal.scalaれ、慣用的なPlayを追加する方法がわかりました。ちなみに、 ScalaJavaの両方のドキュメントがあります。

于 2012-06-19T07:10:56.347 に答える