クラス ScheduledExecutorFactoryBean
- 実装されているすべてのインターフェース:
SerializableSE, ThreadFactorySE, EventListenerSE, Aware, BeanNameAware, DisposableBean, FactoryBean<ScheduledExecutorServiceSE>, InitializingBean, ApplicationContextAware, ApplicationListener<ContextClosedEvent>, Lifecycle, Phased, SmartLifecycle
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
- 関連事項:
フィールドのサマリー
クラス ExecutorConfigurationSupport から継承されたフィールド
DEFAULT_PHASE, loggerインターフェース FactoryBean から継承されたフィールド
OBJECT_TYPE_ATTRIBUTEコンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明protected ScheduledExecutorServiceSEcreateExecutor(int poolSize, ThreadFactorySE threadFactory, RejectedExecutionHandlerSE rejectedExecutionHandler) 新しいScheduledExecutorServiceSE インスタンスを作成します。このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。ClassSE<? extends ScheduledExecutorServiceSE> この FactoryBean が作成するオブジェクトの型を返します。事前にわからない場合はnullを返します。protected RunnableSE特定のタスクをスケジュールする実際の Runnable を決定します。protected ExecutorServiceSEinitializeExecutor(ThreadFactorySE threadFactory, RejectedExecutionHandlerSE rejectedExecutionHandler) ターゲットExecutorServiceSE インスタンスを作成します。booleanこのファクトリによって管理されるオブジェクトはシングルトンですか? つまり、FactoryBean.getObject()は常に同じオブジェクト(キャッシュ可能な参照)を返しますか?protected voidregisterTasks(ScheduledExecutorTask[] tasks, ScheduledExecutorServiceSE executor) 指定されたScheduledExecutorTasksを指定されたScheduledExecutorServiceSE に登録します。voidsetContinueScheduledExecutionAfterException(boolean continueScheduledExecutionAfterException) 例外をスローした後、スケジュールされたタスクの実行を継続するかどうかを指定します。voidsetExposeUnconfigurableExecutor(boolean exposeUnconfigurableExecutor) この FactoryBean が、作成されたエグゼキューターの構成不可能なデコレーターを公開するかどうかを指定します。voidsetPoolSize(int poolSize) ScheduledExecutorService のプールサイズを設定します。voidsetRemoveOnCancelPolicy(boolean removeOnCancelPolicy) ScheduledThreadPoolExecutorSE でキャンセル時に削除モードを設定します。voidsetScheduledExecutorTasks(ScheduledExecutorTask... scheduledExecutorTasks) ScheduledExecutorTask オブジェクトのリストを、この FactoryBean が作成する ScheduledExecutorService に登録します。クラス ExecutorConfigurationSupport から継承されたメソッド
afterExecute, afterPropertiesSet, beforeExecute, cancelRemainingTask, destroy, getPhase, initialize, initiateEarlyShutdown, initiateShutdown, isRunning, onApplicationEvent, setAcceptTasksAfterContextClose, setApplicationContext, setAwaitTerminationMillis, setAwaitTerminationSeconds, setBeanName, setPhase, setRejectedExecutionHandler, setThreadFactory, setThreadNamePrefix, setVirtualThreads, setWaitForTasksToCompleteOnShutdown, shutdown, start, stop, stopクラス CustomizableThreadFactory から継承されたメソッド
newThreadクラス CustomizableThreadCreator から継承されたメソッド
createThread, getDefaultThreadNamePrefix, getThreadGroup, getThreadNamePrefix, getThreadPriority, isDaemon, nextThreadName, setDaemon, setThreadGroup, setThreadGroupName, setThreadPriorityクラス ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSEインターフェース ApplicationListener から継承されたメソッド
supportsAsyncExecutionインターフェース SmartLifecycle から継承されたメソッド
isAutoStartup, isPauseable
コンストラクターの詳細
ScheduledExecutorFactoryBean
public ScheduledExecutorFactoryBean()
メソッドの詳細
setPoolSize
public void setPoolSize(int poolSize) ScheduledExecutorService のプールサイズを設定します。デフォルトは 1 です。setScheduledExecutorTasks
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によって呼び出されます。- 次で指定:
- クラス
ExecutorConfigurationSupportのinitializeExecutor - パラメーター:
threadFactory- 使用する ThreadFactoryrejectedExecutionHandler- 使用する RejectedExecutionHandler- 戻り値:
- 新しい ExecutorService インスタンス
- 関連事項:
createExecutor
protected ScheduledExecutorServiceSE createExecutor(int poolSize, ThreadFactorySE threadFactory, RejectedExecutionHandlerSE rejectedExecutionHandler) 新しいScheduledExecutorServiceSE インスタンスを作成します。デフォルト実装は
ScheduledThreadPoolExecutorSE を作成します。サブクラスでオーバーライドして、カスタムScheduledExecutorServiceSE インスタンスを提供できます。- パラメーター:
poolSize- 指定されたプールサイズthreadFactory- 使用する ThreadFactoryrejectedExecutionHandler- 使用する RejectedExecutionHandler- 戻り値:
- 新しい ScheduledExecutorService インスタンス
- 関連事項:
registerTasks
指定されたScheduledExecutorTasksを指定されたScheduledExecutorServiceSE に登録します。- パラメーター:
tasks- 指定された ScheduledExecutorTasks (空になることはありません)executor- タスクを登録する ScheduledExecutorService
getRunnableToSchedule
特定のタスクをスケジュールする実際の Runnable を決定します。例外をキャッチしてログに記録する
DelegatingErrorHandlingRunnableでタスクの Runnable をラップします。必要に応じて、"continueScheduledExecutionAfterException"フラグに従って例外を抑制します。- パラメーター:
task- スケジュールする ScheduledExecutorTask- 戻り値:
- スケジュールする実際の Runnable (デコレータかもしれません)
getObject
インターフェースからコピーされた説明:FactoryBeanこのファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。BeanFactoryと同様に、これにより、シングルトンとプロトタイプの両方の設計パターンをサポートできます。この FactoryBean が呼び出し時にまだ完全に初期化されていない場合(たとえば、循環参照に関係しているため)、対応する
FactoryBeanNotInitializedExceptionをスローします。FactoryBeans は
nullオブジェクトを返すことができます。Bean ファクトリはこれを通常の値と見なし、この場合はFactoryBeanNotInitializedExceptionをスローしません。ただし、FactoryBean 実装では、必要に応じてFactoryBeanNotInitializedException自体をスローすることが推奨されます。- 次で指定:
- インターフェース
FactoryBean<ScheduledExecutorServiceSE>のgetObject - 戻り値:
- Bean のインスタンス (
nullにすることができます) - 関連事項:
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 - 戻り値:
- 公開されたオブジェクトがシングルトンかどうか
- 関連事項: