public interface SmartLifecycle extends Lifecycle, Phased
Lifecycle インターフェースの拡張。isAutoStartup() の戻り値は、コンテキストのリフレッシュ時にこのオブジェクトを開始する必要があるかどうかを示します。コールバックを受け入れる stop(Runnable) メソッドは、非同期シャットダウンプロセスを持つオブジェクトに役立ちます。このインターフェースのいずれかの実装では、全体的な ApplicationContext のシャットダウン時に不必要な遅延を回避するために、シャットダウン完了時にコールバックの run() メソッドを呼び出す必要があります。 このインターフェースは Phased を継承し、Phased.getPhase() メソッドの戻り値は、このライフサイクルコンポーネントを開始および停止するフェーズを示します。起動プロセスは、 最小のフェーズ値で始まり、 最大のフェーズ値で終了します(Integer.MIN_VALUE が可能な限り最も低く、Integer.MAX_VALUE が可能な限り高い)。シャットダウンプロセスでは、逆の順序が適用されます。同じ値を持つコンポーネントは、同じフェーズ内で任意に順序付けられます。
サンプル: コンポーネント B がコンポーネント A がすでに起動していることに依存している場合、コンポーネント A はコンポーネント B よりも低い位相値を持つ必要があります。シャットダウンプロセス中、コンポーネント B はコンポーネント A の前に停止します。
明示的な「依存」関連は、依存 Bean が常に依存関連の後に開始し、依存関連の前に常に停止するように、フェーズの順序よりも優先されます。
コンテキスト内で SmartLifecycle も実装していないライフサイクルコンポーネントは、フェーズ値が 0 であるかのように扱われます。このように、SmartLifecycle 実装は、負のフェーズ値がある場合、それらのライフサイクルコンポーネントの前に開始するか、それらの後に開始します。正の位相値を持つコンポーネント。
SmartLifecycle の自動起動サポートにより、SmartLifecycle Bean インスタンスは、アプリケーションコンテキストの起動時に初期化されます。結果として、Bean 定義の lazy-init フラグは、SmartLifecycle Bean に対する実際の影響を非常に制限します。
LifecycleProcessor, ConfigurableApplicationContext| 修飾子と型 | メソッドと説明 |
|---|---|
boolean | isAutoStartup() |
void | stop(RunnableSE callback)Lifecycle コンポーネントが現在実行中の場合、停止する必要があることを示します。 |
boolean isAutoStartup()
true が含まれる ApplicationContext がリフレッシュされるときに、この Lifecycle コンポーネントがコンテナーによって自動的に開始される場合、true を返します。false の値は、プレーン Lifecycle 実装に類似した、明示的な Lifecycle.start() 呼び出しを介してコンポーネントが開始されることを意図していることを示します。
void stop(RunnableSE callback)
提供されたコールバックは、LifecycleProcessor によって使用され、共通のシャットダウン順序値を持つすべてのコンポーネントの順序付けられた、潜在的に同時のシャットダウンをサポートします。コールバック は、SmartLifecycle コンポーネントが実際に停止した後に実行する必要があります。
LifecycleProcessor は、stop メソッドのこのバリアントのみを呼び出します。つまり、SmartLifecycle 実装では、このメソッドの実装内に明示的に委譲されない限り、Lifecycle.stop() は呼び出されません。