Grailsサービスクラスがシングルトンタイプであることがわかりました。どのような理由で、サービスクラスはシングルトンとして定義されていますか?
前もって感謝します。
Grails サービスは、クラスに次のようなものを追加することで、だけでなくさまざまなスコープで使用できます。 singleton
static scope = "flow"
マニュアルから:
prototype
- 別のクラスに注入されるたびに、新しいサービスが作成されますrequest
- リクエストごとに新しいサービスが作成されますflash
- 現在および次のリクエストに対してのみ、新しいサービスが作成されますflow
- Web フローでは、フローのスコープに対してサービスが存在します。conversation
- Web フローでは、会話の範囲に対してサービスが存在します。つまり、ルート フローとそのサブ フローsession
- ユーザー セッションのスコープに対してサービスが作成されるsingleton
(デフォルト) - サービスのインスタンスは 1 つだけ存在します。デフォルトとして選択する主な理由はsingleton
、新しいオブジェクトを作成するオーバーヘッドがなくなるため、メモリ使用量の削減 (インスタンスが 1 つだけ存在する) と処理時間の短縮の両方でパフォーマンスが向上するためです。