クラス ScheduledExecutorFactoryBean

実装されたすべてのインターフェース:
SerializableSEThreadFactorySEEventListenerSEAwareBeanNameAwareDisposableBeanFactoryBean<ScheduledExecutorServiceSE>InitializingBeanApplicationContextAwareApplicationListener<ContextClosedEvent>LifecyclePhasedSmartLifecycle

public class ScheduledExecutorFactoryBean extends ExecutorConfigurationSupport implements FactoryBean<ScheduledExecutorServiceSE>
ScheduledExecutorServiceSE(デフォルト: ScheduledThreadPoolExecutorSE)をセットアップし、Bean 参照用に公開する FactoryBean

ScheduledExecutorTasks の登録を許可し、初期化時に ScheduledExecutorServiceSE を自動的に開始し、コンテキストの破棄時にキャンセルします。起動時にタスクの静的登録のみが必要なシナリオでは、アプリケーションコードで ScheduledExecutorServiceSE インスタンス自体にアクセスする必要はまったくありません。ScheduledExecutorFactoryBean は、ライフサイクル統合に使用されています。

別の方法として、コンストラクターインジェクションを使用して ScheduledThreadPoolExecutorSE インスタンスを直接セットアップするか、ExecutorsSE クラスを指すファクトリメソッド定義を使用することができます。 これは特に、構成クラスの一般的な @Bean メソッドに強くお勧めします。この FactoryBean バリアントでは、ScheduledExecutorService の代わりに FactoryBean 型を強制的に返すことになります。

ScheduledExecutorServiceSE は、実行ごとに新しいジョブをインスタンス化する Quartz とは対照的に、繰り返し実行間で共有される RunnableSE インスタンスを使用することに注意してください。

警告 : ネイティブ ScheduledExecutorServiceSE を介して送信された RunnablesSE は、例外をスローすると、実行スケジュールから削除されます。このような例外の後も実行を継続する場合は、この FactoryBean の "continueScheduledExecutionAfterException" プロパティを "true" に切り替えます。

導入:
2.0
作成者:
Juergen Hoeller
関連事項:
  • コンストラクターの詳細

    • ScheduledExecutorFactoryBean

      public ScheduledExecutorFactoryBean()
  • メソッドの詳細

    • setPoolSize

      public void setPoolSize(int poolSize)
      ScheduledExecutorService のプールサイズを設定します。デフォルトは 1 です。
    • setScheduledExecutorTasks

      public void setScheduledExecutorTasks(ScheduledExecutorTask... scheduledExecutorTasks)
      ScheduledExecutorTask オブジェクトのリストを、この FactoryBean が作成する ScheduledExecutorService に登録します。各 ScheduledExecutorTask の設定に応じて、ScheduledExecutorService のスケジュール方法の 1 つを介して登録されます。
      関連事項:
    • setRemoveOnCancelPolicy

      public void setRemoveOnCancelPolicy(boolean removeOnCancelPolicy)
      ScheduledThreadPoolExecutorSE でキャンセル時に削除モードを設定します。

      デフォルトは false です。true に設定されている場合、ターゲットエグゼキューターはキャンセル時に削除モードに切り替えられます(可能な場合は、ソフトフォールバックが使用されます)。

    • setContinueScheduledExecutionAfterException

      public void setContinueScheduledExecutionAfterException(boolean continueScheduledExecutionAfterException)
      例外をスローした後、スケジュールされたタスクの実行を継続するかどうかを指定します。

      デフォルトは "false" で、ScheduledExecutorServiceSE のネイティブの動作に一致します。各タスクの例外のない実行のためにこのフラグを "true" に切り替え、正常に実行された場合のようにスケジュールされた実行を継続します。

      関連事項:
    • setExposeUnconfigurableExecutor

      public void setExposeUnconfigurableExecutor(boolean exposeUnconfigurableExecutor)
      この FactoryBean が、作成されたエグゼキューターの構成不可能なデコレーターを公開するかどうかを指定します。

      デフォルトは "false" で、生のエグゼキューターを Bean 参照として公開します。このフラグを "true" に切り替えて、クライアントがエグゼキューターの構成を変更できないようにします。

      関連事項:
    • initializeExecutor

      protected ExecutorServiceSE initializeExecutor(ThreadFactorySE threadFactory, RejectedExecutionHandlerSE rejectedExecutionHandler)
      クラスからコピーされた説明: ExecutorConfigurationSupport
      ターゲット ExecutorServiceSE インスタンスを作成します。afterPropertiesSet によって呼び出されます。
      次で指定:
      クラス ExecutorConfigurationSupportinitializeExecutor 
      パラメーター:
      threadFactory - 使用する ThreadFactory
      rejectedExecutionHandler - 使用する RejectedExecutionHandler
      戻り値:
      新しい ExecutorService インスタンス
      関連事項:
    • createExecutor

      protected ScheduledExecutorServiceSE createExecutor(int poolSize, ThreadFactorySE threadFactory, RejectedExecutionHandlerSE rejectedExecutionHandler)
      新しい ScheduledExecutorServiceSE インスタンスを作成します。

      デフォルト実装は ScheduledThreadPoolExecutorSE を作成します。サブクラスでオーバーライドして、カスタム ScheduledExecutorServiceSE インスタンスを提供できます。

      パラメーター:
      poolSize - 指定されたプールサイズ
      threadFactory - 使用する ThreadFactory
      rejectedExecutionHandler - 使用する RejectedExecutionHandler
      戻り値:
      新しい ScheduledExecutorService インスタンス
      関連事項:
    • registerTasks

      protected void registerTasks(ScheduledExecutorTask[] tasks, ScheduledExecutorServiceSE executor)
      指定された ScheduledExecutorTasks を指定された ScheduledExecutorServiceSE に登録します。
      パラメーター:
      tasks - 指定された ScheduledExecutorTasks (空になることはありません)
      executor - タスクを登録する ScheduledExecutorService
    • getRunnableToSchedule

      protected RunnableSE getRunnableToSchedule(ScheduledExecutorTask task)
      特定のタスクをスケジュールする実際の Runnable を決定します。

      例外をキャッチしてログに記録する DelegatingErrorHandlingRunnable でタスクの Runnable をラップします。必要に応じて、"continueScheduledExecutionAfterException" フラグに従って例外を抑制します。

      パラメーター:
      task - スケジュールする ScheduledExecutorTask
      戻り値:
      スケジュールする実際の Runnable (デコレータかもしれません)
    • getObject

      インターフェースからコピーされた説明: FactoryBean
      このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。

      BeanFactory と同様に、これにより、シングルトンとプロトタイプの両方のデザインパターンをサポートできます。

      この FactoryBean が呼び出し時にまだ完全に初期化されていない場合(たとえば、循環参照に関係しているため)、対応する FactoryBeanNotInitializedException をスローします。

      Spring 2.0 以降、FactoryBeans は null オブジェクトを返すことができます。ファクトリはこれを通常の値として使用します。この場合、FactoryBeanNotInitializedException はスローされません。FactoryBean の実装では、必要に応じて FactoryBeanNotInitializedException 自体をすぐにスローすることをお勧めします。

      次で指定:
      インターフェース FactoryBean<ScheduledExecutorServiceSE>getObject 
      戻り値:
      Bean のインスタンス (null にすることができます)
      関連事項:
    • getObjectType

      public ClassSE<? extends ScheduledExecutorServiceSE> getObjectType()
      インターフェースからコピーされた説明: FactoryBean
      この FactoryBean が作成するオブジェクトの型、または事前に不明な場合は null を返します。

      これにより、たとえばオートワイヤーなどで、オブジェクトをインスタンス化せずに特定の型の Bean を確認できます。

      シングルトンオブジェクトを作成している実装の場合、このメソッドはシングルトンの作成を可能な限り回避しようとします。むしろ、事前に型を推定する必要があります。プロトタイプの場合、ここで意味のある型を返すこともお勧めします。

      このメソッドは、この FactoryBean が完全に初期化される前に呼び出すことができます。初期化中に作成された状態に依存しないでください。もちろん、利用可能な場合はそのような状態を引き続き使用できます。

      注意 : オートワイヤーは、ここで null を返す FactoryBeans を単に無視します。FactoryBean の現在の状態を使用して、このメソッドを適切に実装することを強くお勧めします。

      次で指定:
      インターフェース FactoryBean<ScheduledExecutorServiceSE>getObjectType 
      戻り値:
      この FactoryBean が作成するオブジェクトの型、または呼び出し時に不明な場合は null 
      関連事項:
    • isSingleton

      public boolean isSingleton()
      インターフェースからコピーされた説明: FactoryBean
      このファクトリによって管理されるオブジェクトはシングルトンですか? つまり、FactoryBean.getObject() は常に同じオブジェクト(キャッシュ可能な参照)を返しますか?

      注意 : FactoryBean がシングルトンオブジェクトを保持することを示す場合、getObject() から返されたオブジェクトは所有 BeanFactory によってキャッシュされる可能性があります。FactoryBean が常に同じ参照を公開しない限り、true を返さないでください。

      FactoryBean 自体のシングルトンステータスは、通常、所有する BeanFactory によって提供されます。通常、そこではシングルトンとして定義する必要があります。

      注意 false を返すこのメソッドは、返されるオブジェクトが独立したインスタンスであることを必ずしも示しません。拡張 SmartFactoryBean インターフェースの実装は、SmartFactoryBean.isPrototype() メソッドを通じて独立したインスタンスを明示的に示す場合があります。この拡張インターフェースを実装しないプレーンな FactoryBean 実装は、isSingleton() 実装が false を返す場合、常に独立したインスタンスを返すと単純に想定されます。

      FactoryBean は通常シングルトンインスタンスを管理するため、デフォルトの実装は true を返します。

      次で指定:
      インターフェース FactoryBean<ScheduledExecutorServiceSE>isSingleton 
      戻り値:
      公開されたオブジェクトがシングルトンかどうか
      関連事項: