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" に切り替えます。
loggerOBJECT_TYPE_ATTRIBUTE| コンストラクターと説明 |
|---|
ScheduledExecutorFactoryBean() |
| 修飾子と型 | メソッドと説明 |
|---|---|
protected ScheduledExecutorServiceSE | createExecutor(int poolSize, ThreadFactorySE threadFactory, RejectedExecutionHandlerSE rejectedExecutionHandler) 新しい ScheduledExecutorServiceSE インスタンスを作成します。 |
ScheduledExecutorServiceSE | getObject() このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。 |
ClassSE<? extends ScheduledExecutorServiceSE> | getObjectType() この FactoryBean が作成するオブジェクトの型を返します。事前にわからない場合は null を返します。 |
protected RunnableSE | getRunnableToSchedule(ScheduledExecutorTask task) 特定のタスクをスケジュールする実際の Runnable を決定します。 |
protected ExecutorServiceSE | initializeExecutor(ThreadFactorySE threadFactory, RejectedExecutionHandlerSE rejectedExecutionHandler) ターゲット ExecutorServiceSE インスタンスを作成します。 |
boolean | isSingleton() このファクトリによって管理されるオブジェクトはシングルトンですか? つまり、 FactoryBean.getObject() は常に同じオブジェクト(キャッシュ可能な参照)を返しますか? |
protected void | registerTasks(ScheduledExecutorTask[] tasks, ScheduledExecutorServiceSE executor) 指定された ScheduledExecutorTasks を指定された ScheduledExecutorServiceSE に登録します。 |
void | setContinueScheduledExecutionAfterException(boolean continueScheduledExecutionAfterException) 例外をスローした後、スケジュールされたタスクの実行を継続するかどうかを指定します。 |
void | setExposeUnconfigurableExecutor(boolean exposeUnconfigurableExecutor) この FactoryBean が、作成されたエグゼキューターの構成不可能なデコレーターを公開するかどうかを指定します。 |
void | setPoolSize(int poolSize)ScheduledExecutorService のプールサイズを設定します。 |
void | setRemoveOnCancelPolicy(boolean removeOnCancelPolicy)ScheduledThreadPoolExecutorSE でキャンセル時に削除モードを設定します。 |
void | setScheduledExecutorTasks(ScheduledExecutorTask... scheduledExecutorTasks)ScheduledExecutorTask オブジェクトのリストを、この FactoryBean が作成する ScheduledExecutorService に登録します。 |
afterPropertiesSet, cancelRemainingTask, destroy, initialize, setAwaitTerminationMillis, setAwaitTerminationSeconds, setBeanName, setRejectedExecutionHandler, setThreadFactory, setThreadNamePrefix, setWaitForTasksToCompleteOnShutdown, shutdownnewThreadcreateThread, getDefaultThreadNamePrefix, getThreadGroup, getThreadNamePrefix, getThreadPriority, isDaemon, nextThreadName, setDaemon, setThreadGroup, setThreadGroupName, setThreadPrioritycloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEpublic void setPoolSize(int poolSize)
public void setScheduledExecutorTasks(ScheduledExecutorTask... scheduledExecutorTasks)
ScheduledExecutorService.schedule(java.lang.Runnable, long, java.util.concurrent.TimeUnit)SE, ScheduledExecutorService.scheduleWithFixedDelay(java.lang.Runnable, long, long, java.util.concurrent.TimeUnit)SE, ScheduledExecutorService.scheduleAtFixedRate(java.lang.Runnable, long, long, java.util.concurrent.TimeUnit)SEpublic void setRemoveOnCancelPolicy(boolean removeOnCancelPolicy)
ScheduledThreadPoolExecutorSE でキャンセル時に削除モードを設定します。 デフォルトは false です。true に設定されている場合、ターゲットエグゼキューターはキャンセル時に削除モードに切り替えられます(可能な場合は、ソフトフォールバックが使用されます)。
public void setContinueScheduledExecutionAfterException(boolean continueScheduledExecutionAfterException)
デフォルトは "false" で、ScheduledExecutorServiceSE のネイティブの動作に一致します。各タスクの例外のない実行のためにこのフラグを "true" に切り替え、正常に実行された場合のようにスケジュールされた実行を継続します。
public void setExposeUnconfigurableExecutor(boolean exposeUnconfigurableExecutor)
デフォルトは "false" で、生のエグゼキューターを Bean 参照として公開します。このフラグを "true" に切り替えて、クライアントがエグゼキューターの構成を変更できないようにします。
protected ExecutorServiceSE initializeExecutor(ThreadFactorySE threadFactory, RejectedExecutionHandlerSE rejectedExecutionHandler)
ExecutorConfigurationSupportExecutorServiceSE インスタンスを作成します。afterPropertiesSet によって呼び出されます。ExecutorConfigurationSupport の initializeExecutor threadFactory - 使用する ThreadFactoryrejectedExecutionHandler - 使用する RejectedExecutionHandlerExecutorConfigurationSupport.afterPropertiesSet()protected ScheduledExecutorServiceSE createExecutor(int poolSize, ThreadFactorySE threadFactory, RejectedExecutionHandlerSE rejectedExecutionHandler)
ScheduledExecutorServiceSE インスタンスを作成します。 デフォルト実装は ScheduledThreadPoolExecutorSE を作成します。サブクラスでオーバーライドして、カスタム ScheduledExecutorServiceSE インスタンスを提供できます。
poolSize - 指定されたプールサイズ threadFactory - 使用する ThreadFactoryrejectedExecutionHandler - 使用する RejectedExecutionHandlerExecutorConfigurationSupport.afterPropertiesSet(), ScheduledThreadPoolExecutorSEprotected void registerTasks(ScheduledExecutorTask[] tasks, ScheduledExecutorServiceSE executor)
ScheduledExecutorTasks を指定された ScheduledExecutorServiceSE に登録します。tasks - 指定された ScheduledExecutorTasks (空になることはありません)executor - タスクを登録する ScheduledExecutorServiceprotected RunnableSE getRunnableToSchedule(ScheduledExecutorTask task)
例外をキャッチしてログに記録する DelegatingErrorHandlingRunnable でタスクの Runnable をラップします。必要に応じて、"continueScheduledExecutionAfterException" フラグに従って例外を抑制します。
task - スケジュールする ScheduledExecutorTask@Nullable public ScheduledExecutorServiceSE getObject()
FactoryBeanBeanFactory と同様に、これにより、シングルトンとプロトタイプの両方のデザインパターンをサポートできます。
この FactoryBean が呼び出し時にまだ完全に初期化されていない場合(たとえば、循環参照に関係しているため)、対応する FactoryBeanNotInitializedException をスローします。
Spring 2.0 以降、FactoryBeans は null オブジェクトを返すことができます。ファクトリはこれを通常の値として使用します。この場合、FactoryBeanNotInitializedException はスローされません。FactoryBean の実装では、必要に応じて FactoryBeanNotInitializedException 自体をすぐにスローすることをお勧めします。
FactoryBean<ScheduledExecutorServiceSE> の getObject null にすることができます)FactoryBeanNotInitializedExceptionpublic ClassSE<? extends ScheduledExecutorServiceSE> getObjectType()
FactoryBeannull を返します。これにより、たとえばオートワイヤーなどで、オブジェクトをインスタンス化せずに特定の型の Bean を確認できます。
シングルトンオブジェクトを作成している実装の場合、このメソッドはシングルトンの作成を可能な限り回避しようとします。むしろ、事前に型を推定する必要があります。プロトタイプの場合、ここで意味のある型を返すこともお勧めします。
このメソッドは、この FactoryBean が完全に初期化される前に呼び出すことができます。初期化中に作成された状態に依存しないでください。もちろん、利用可能な場合はそのような状態を引き続き使用できます。
注意 : オートワイヤーは、ここで null を返す FactoryBeans を単に無視します。FactoryBean の現在の状態を使用して、このメソッドを適切に実装することを強くお勧めします。
FactoryBean<ScheduledExecutorServiceSE> の getObjectType null ListableBeanFactory.getBeansOfType(java.lang.Class<T>)public boolean isSingleton()
FactoryBeanFactoryBean.getObject() は常に同じオブジェクト(キャッシュ可能な参照)を返しますか? 注意 : FactoryBean がシングルトンオブジェクトを保持することを示す場合、getObject() から返されたオブジェクトは所有 BeanFactory によってキャッシュされる可能性があります。FactoryBean が常に同じ参照を公開しない限り、true を返さないでください。
FactoryBean 自体のシングルトンステータスは、通常、所有する BeanFactory によって提供されます。通常、そこではシングルトンとして定義する必要があります。
注意 : false を返すこのメソッドは、返されるオブジェクトが独立したインスタンスであることを必ずしも示しません。拡張 SmartFactoryBean インターフェースの実装は、SmartFactoryBean.isPrototype() メソッドを通じて独立したインスタンスを明示的に示す場合があります。この拡張インターフェースを実装しないプレーンな FactoryBean 実装は、isSingleton() 実装が false を返す場合、常に独立したインスタンスを返すと単純に想定されます。
FactoryBean は通常シングルトンインスタンスを管理するため、デフォルトの実装では true が返されます。
FactoryBean<ScheduledExecutorServiceSE> の isSingleton FactoryBean.getObject(), SmartFactoryBean.isPrototype()