インターフェース 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 int
getPhase()
このライフサイクルオブジェクトが実行されるはずのフェーズを返します。default boolean
default void
stop
(RunnableSE callback) Lifecycle コンポーネントが現在実行中の場合、停止する必要があることを示します。
フィールドの詳細
DEFAULT_PHASE
static final int DEFAULT_PHASESmartLifecycle
のデフォルトのフェーズ:Integer.MAX_VALUE
。これは、通常の
Lifecycle
実装に関連付けられている共通フェーズ0
とは異なり、通常は自動起動されるSmartLifecycle
Bean を後の起動フェーズと前のシャットダウンフェーズに入れます。特定の
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
を返します。