インターフェース SmartLifecycle
- すべての既知のサブインターフェース:
MessageListenerContainer
- すべての既知の実装クラス:
AbstractBrokerMessageHandler、AbstractJmsListeningContainer、AbstractMessageListenerContainer、AbstractPollingMessageListenerContainer、AnnotatedEndpointConnectionManager、ConnectionManagerSupport、DefaultMessageListenerContainer、EndpointConnectionManager、ExecutorConfigurationSupport、GenericMessageEndpointManager、JmsListenerEndpointRegistry、JmsMessageEndpointManager、ReactorClientHttpConnector、ReactorClientHttpRequestFactory、ReactorNettyClientRequestFactory、ReactorResourceFactory、ReactorResourceFactory、ScheduledExecutorFactoryBean、SchedulerFactoryBean、SimpAnnotationMethodMessageHandler、SimpleAsyncTaskScheduler、SimpleBrokerMessageHandler、SimpleMessageListenerContainer、StompBrokerRelayMessageHandler、SubProtocolWebSocketHandler、ThreadPoolExecutorFactoryBean、ThreadPoolTaskExecutor、ThreadPoolTaskScheduler、UserDestinationMessageHandler、WebSocketAnnotationMethodMessageHandler、WebSocketConnectionManager、WebSocketHandlerMapping、WebSocketStompClient
ApplicationContext のリフレッシュやシャットダウン時に開始する必要があるオブジェクト用の Lifecycle インターフェースの拡張。isAutoStartup() 戻り値は、コンテキストのリフレッシュ時にこのオブジェクトを開始する必要があるかどうかを示します。コールバックを受け入れる stop(Runnable) メソッドは、非同期シャットダウンプロセスを持つオブジェクトに役立ちます。このインターフェースのいずれかの実装では、全体的な ApplicationContext のシャットダウン時に不必要な遅延を回避するために、シャットダウン完了時にコールバックの run() メソッドを呼び出す必要があります。
このインターフェースは Phased を継承し、getPhase() メソッドの戻り値は、この Lifecycle コンポーネントが開始および停止されるフェーズを示します。起動プロセスは、 最小の位相値で始まり、 最大の位相値で終了します(Integer.MIN_VALUE が可能な限り低い、Integer.MAX_VALUE が可能な限り高い)。シャットダウンプロセスでは、逆の順序が適用されます。同じ値を持つコンポーネントは、同じフェーズ内で任意に順序付けられます。
サンプル: コンポーネント B がコンポーネント A がすでに起動していることに依存している場合、コンポーネント A はコンポーネント B よりも低い位相値を持つ必要があります。シャットダウンプロセス中、コンポーネント B はコンポーネント A の前に停止します。
明示的な「依存」関連は、依存 Bean が常に依存関連の後に開始し、依存関連の前に常に停止するように、フェーズの順序よりも優先されます。
コンテキスト内の SmartLifecycle を実装していない Lifecycle コンポーネントは、位相値が 0 であるかのように扱われます。これにより、SmartLifecycle コンポーネントが負の位相値を持つ場合は、SmartLifecycle コンポーネントが Lifecycle コンポーネントよりも前に開始し、SmartLifecycle コンポーネントが正の位相値を持つ場合は、SmartLifecycle コンポーネントが Lifecycle コンポーネントよりも後に開始することができます。
SmartLifecycle の自動起動サポートにより、SmartLifecycle Bean インスタンスは通常、アプリケーションコンテキストの起動時に初期化されることに注意してください。結果として、Bean 定義の lazy-init フラグは、SmartLifecycle Bean に対する実際の効果を非常に限定しています。
- 導入:
- 3.0
- 作成者:
- Mark Fisher, Juergen Hoeller, Sam Brannen
- 関連事項:
フィールドのサマリー
フィールドメソッドのサマリー
修飾子と型メソッド説明default intgetPhase()このライフサイクルオブジェクトが実行されるはずのフェーズを返します。default booleandefault voidstop(RunnableSE callback) Lifecycle コンポーネントが現在実行中の場合、停止する必要があることを示します。
フィールドの詳細
DEFAULT_PHASE
static final int DEFAULT_PHASESmartLifecycleのデフォルトのフェーズ:Integer.MAX_VALUE。これは、通常の
Lifecycle実装に関連付けられている共通フェーズ0とは異なり、通常は自動起動されるSmartLifecycleBean を後の起動フェーズと前のシャットダウンフェーズに入れます。特定の
SmartLifecycleコンポーネントには、異なるデフォルトフェーズが付属していることに注意してください。たとえば、Integer.MAX_VALUE / 2を備えたエグゼキュータ / スケジューラなどです。
メソッドの詳細
isAutoStartup
default boolean isAutoStartup()trueが含まれるApplicationContextがリフレッシュされるときに、このLifecycleコンポーネントがコンテナーによって自動的に開始される場合、trueを返します。falseの値は、プレーンLifecycle実装に類似した、明示的なLifecycle.start()呼び出しを介してコンポーネントが開始されることを意図していることを示します。デフォルトの実装は
trueを返します。stop
Lifecycle コンポーネントが現在実行中の場合、停止する必要があることを示します。提供されたコールバックは、
LifecycleProcessorによって使用され、共通のシャットダウン順序値を持つすべてのコンポーネントの順序付けられた、潜在的に同時のシャットダウンをサポートします。コールバック は、SmartLifecycleコンポーネントが実際に停止した後に実行する必要があります。LifecycleProcessorは、stopメソッドのこのバリアントのみを呼び出します。つまり、SmartLifecycle実装では、このメソッドの実装内に明示的に委譲されない限り、Lifecycle.stop()は呼び出されません。デフォルトの実装は
Lifecycle.stop()に委譲し、呼び出しスレッドで指定されたコールバックをすぐにトリガーします。2 つの間に同期がないことに注意してください。カスタム実装では、少なくとも共通のライフサイクルモニター(存在する場合)内に同じ手順を入れたい場合があります。getPhase
default int getPhase()このライフサイクルオブジェクトが実行されるはずのフェーズを返します。デフォルトの実装は、通常の
Lifecycle実装の前にstop()コールバックを実行できるようにするためにDEFAULT_PHASEを返します。