public interface Lifecycle
SmartLifecycle
を実装することを検討してください。 コンポーネント(通常は Spring コンテキストで定義された Spring Bean)とコンテナー(通常は Spring ApplicationContext
自体)の両方で実装できます。コンテナーは、各コンテナー内で適用されるすべてのコンポーネントに開始 / 停止シグナルを伝達します。実行時の停止 / 再開シナリオの場合。
直接呼び出しまたは JMX を介した管理操作に使用できます。後者の場合、MBeanExporter
は通常 InterfaceBasedMBeanInfoAssembler
で定義され、アクティビティ制御されたコンポーネントの可視性をライフサイクルインターフェースに制限します。
現在の Lifecycle
インターフェースは、 トップレベルのシングルトン Bean でのみサポートされていることに注意してください。他のコンポーネントでは、Lifecycle
インターフェースは検出されないままなので無視されます。また、拡張 SmartLifecycle
インターフェースは、アプリケーションコンテキストの起動およびシャットダウンフェーズとの高度な統合を提供することに注意してください。
SmartLifecycle
, ConfigurableApplicationContext
, AbstractMessageListenerContainer
, SchedulerFactoryBean
修飾子と型 | メソッドと説明 |
---|---|
boolean | isRunning() このコンポーネントが現在実行されているかどうかを確認します。 |
void | start() このコンポーネントを起動します。 |
void | stop() このメソッドを返すとコンポーネントが完全に停止するように、通常は同期的にこのコンポーネントを停止します。 |
void start()
コンポーネントがすでに実行されている場合は、例外をスローしないでください。
コンテナーの場合、これは適用されるすべてのコンポーネントに開始シグナルを伝播します。
void stop()
SmartLifecycle
とその stop(Runnable)
バリアントの実装を検討してください。 この停止通知は破棄前に送信されるとは限らないことに注意してください。通常のシャットダウンでは、一般的な破棄コールバックが伝播される前に、Lifecycle
Bean は最初に停止通知を受信します。ただし、コンテキストの存続期間中のホットリフレッシュまたは中断されたリフレッシュ試行では、特定の Bean の destroy メソッドが、停止シグナルを事前に考慮することなく呼び出されます。
コンポーネントが実行されていない(まだ開始されていない)場合は、例外をスローしないでください。
コンテナーの場合、これは停止シグナルを適用するすべてのコンポーネントに伝播します。
boolean isRunning()
コンテナーの場合、これは、適用されるすべてのコンポーネントが現在実行されている場合にのみ、true
を返します。