11

Grailsサービスクラスがシングルトンタイプであることがわかりました。どのような理由で、サービスクラスはシングルトンとして定義されていますか?

前もって感謝します。

4

1 に答える 1

20

Grails サービスは、クラスに次のようなものを追加することで、だけでなくさまざまなスコープで使用できます。 singleton

static scope = "flow"

マニュアルから:

  • prototype- 別のクラスに注入されるたびに、新しいサービスが作成されます
  • request- リクエストごとに新しいサービスが作成されます
  • flash- 現在および次のリクエストに対してのみ、新しいサービスが作成されます
  • flow- Web フローでは、フローのスコープに対してサービスが存在します。
  • conversation- Web フローでは、会話の範囲に対してサービスが存在します。つまり、ルート フローとそのサブ フロー
  • session- ユーザー セッションのスコープに対してサービスが作成される
  • singleton(デフォルト) - サービスのインスタンスは 1 つだけ存在します。

デフォルトとして選択する主な理由はsingleton、新しいオブジェクトを作成するオーバーヘッドがなくなるため、メモリ使用量の削減 (インスタンスが 1 つだけ存在する) と処理時間の短縮の両方でパフォーマンスが向上するためです。

于 2012-06-19T06:20:26.193 に答える