2012-06-19 15 views

答えて

18

Grailsのサービスは、used with different scopesかもしれがちょうどsingleton、クラスにこのようなものを追加することではない:マニュアルから

static scope = "flow" 

  • prototype - 新しいサービスが作成されるすべての別のクラスに注入される時間
  • request - リクエストごとに新しいサービスが作成されます
  • flash - 新しいサービスは、現在および次の要求のみ
  • flowに作成されます - ウェブでサービスのために存在して流れる - ウェブでサービスフロー
  • conversationの範囲のために存在して流れます会話の範囲。すなわち、ルートの流れとそのサブ
  • sessionを流れ - サービスの1つのインスタンスのみが今まで

の主な理由が存在する - サービスは、ユーザーセッション

  • singleton(デフォルト)の範囲のために作成されますsingletonをデフォルトとして選択すると、新しいオブジェクトの作成によるオーバーヘッドがなくなるため、メモリ使用量の削減(1つのインスタンスのみが座っている)と処理時間の短縮の両方でパフォーマンスが向上します。

  • +0

    今私は疑いがあります。トランザクションをサポートする 'm1'という名前のサービスがあるとします。現在、2人のユーザーが 'm1 'に同時にアクセスしています。ただし、' service'はシングルトンですが、トランザクションサポートと同時に2人のユーザーを同時に処理する方法はありますか? –

    +1

    [取引に関するマニュアルの全セクション](http://grails.org/doc/latest/guide/services.html#declarativeTransactions)があります。トランザクションはメソッド呼び出し中に処理されるため、(サービスに状態を格納していない限り)スコープには入りません。 – OverZealous

    関連する問題