インターフェース SmartLifecycle

すべてのスーパーインターフェース:
LifecyclePhased
すべての既知のサブインターフェース:
MessageListenerContainer
すべての既知の実装クラス:
AbstractBrokerMessageHandlerAbstractJmsListeningContainerAbstractMessageListenerContainerAbstractPollingMessageListenerContainerAnnotatedEndpointConnectionManagerConnectionManagerSupportDefaultMessageListenerContainerEndpointConnectionManagerExecutorConfigurationSupportGenericMessageEndpointManagerJmsListenerEndpointRegistryJmsMessageEndpointManagerReactorClientHttpConnectorReactorClientHttpRequestFactoryReactorNettyClientRequestFactoryReactorResourceFactoryReactorResourceFactoryScheduledExecutorFactoryBeanSchedulerFactoryBeanSimpAnnotationMethodMessageHandlerSimpleAsyncTaskSchedulerSimpleBrokerMessageHandlerSimpleMessageListenerContainerStompBrokerRelayMessageHandlerSubProtocolWebSocketHandlerThreadPoolExecutorFactoryBeanThreadPoolTaskExecutorThreadPoolTaskSchedulerUserDestinationMessageHandlerWebSocketAnnotationMethodMessageHandlerWebSocketConnectionManagerWebSocketHandlerMappingWebSocketStompClient

public interface SmartLifecycle extends Lifecycle, Phased
特定の順序で 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
関連事項:
  • フィールドサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    static final int
    SmartLifecycle のデフォルトのフェーズ: Integer.MAX_VALUE
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    default int
    このライフサイクルオブジェクトが実行されるはずのフェーズを返します。
    default boolean
    true が含まれる ApplicationContext がリフレッシュされるときに、この Lifecycle コンポーネントがコンテナーによって自動的に開始される場合、true を返します。
    default void
    stop(RunnableSE callback)
    Lifecycle コンポーネントが現在実行中の場合、停止する必要があることを示します。

    インターフェース org.springframework.context.Lifecycle から継承されたメソッド

    isRunning, start, stop
  • フィールドの詳細

    • DEFAULT_PHASE

      static final int DEFAULT_PHASE
      SmartLifecycle のデフォルトのフェーズ: Integer.MAX_VALUE

      これは、通常の Lifecycle 実装に関連付けられている共通フェーズ 0 とは異なり、通常は自動起動される SmartLifecycle Bean を後の起動フェーズと前のシャットダウンフェーズに入れます。

      特定の SmartLifecycle コンポーネントには、異なるデフォルトフェーズが付属していることに注意してください。たとえば、Integer.MAX_VALUE / 2 を備えたエグゼキュータ / スケジューラなどです。

      導入:
      5.1
      関連事項:
  • メソッドの詳細

    • isAutoStartup

      default boolean isAutoStartup()
      true が含まれる ApplicationContext がリフレッシュされるときに、この Lifecycle コンポーネントがコンテナーによって自動的に開始される場合、true を返します。

      false の値は、プレーン Lifecycle 実装に類似した、明示的な Lifecycle.start() 呼び出しを介してコンポーネントが開始されることを意図していることを示します。

      デフォルトの実装は true を返します。

      関連事項:
    • stop

      default void stop(RunnableSE callback)
      Lifecycle コンポーネントが現在実行中の場合、停止する必要があることを示します。

      提供されたコールバックは、LifecycleProcessor によって使用され、共通のシャットダウン順序値を持つすべてのコンポーネントの順序付けられた、潜在的に同時のシャットダウンをサポートします。コールバック は、SmartLifecycle コンポーネントが実際に停止した後に実行する必要があります。

      LifecycleProcessor は、stop メソッドのこのバリアントのみを呼び出します。つまり、SmartLifecycle 実装では、このメソッドの実装内に明示的に委譲されない限り、Lifecycle.stop() は呼び出されません。

      デフォルトの実装は Lifecycle.stop() に委譲し、呼び出しスレッドで指定されたコールバックをすぐにトリガーします。2 つの間に同期がないことに注意してください。カスタム実装では、少なくとも共通のライフサイクルモニター(存在する場合)内に同じ手順を入れたい場合があります。

      関連事項:
    • getPhase

      default int getPhase()
      このライフサイクルオブジェクトが実行されるはずのフェーズを返します。

      デフォルトの実装は、通常の Lifecycle 実装の前に stop() コールバックを実行できるようにするために DEFAULT_PHASE を返します。

      次で指定:
      インターフェース PhasedgetPhase 
      関連事項: