アプリケーションの一部のソフトウェア コンポーネントでは、起動とシャットダウンのアクティビティが必要です。
質問 1: Scala でそのような「サービス」を開始および停止するためのベスト プラクティスは何ですか?
私は自分のアプリケーションで依存性注入 (DI) を使用しています。私の現在の理解では、DIはソフトウェア コンポーネント間の依存関係を宣言しますが、副作用がないはずです(つまり、DI メカニズムはそれ自体でサービスを開始/停止するべきではありません)。したがって、DI はサービスのアクティブ化と直交しています。
ただし、重複があるようです。アプリケーションに が含まれておりNotificationService
、それが を使用しているとしSchedulingService
ます。そこで、スケジューリング サービスの実装を通知サービスの実装に挿入し、これらのサービスを手動で開始および停止します。ただし、DI フレームワークには、どのサービスをインスタンス化する必要があるか (したがって開始/停止する必要があるか)、どのサービスがどのサービスに依存しているか (したがって、サービスを開始/停止する必要がある順序) を知るためのすべての情報が手元にあります。したがって、それらを開始/停止する方法を提供でき、ボイラープレートコードを節約できます!
質問 2: DI (Guice など) を拡張して、注入されたサービスを記録し、それらを開始/停止する方法を提供する試みはありますか?