public class ScheduledAnnotationBeanPostProcessor extends ObjectSE implements MergedBeanDefinitionPostProcessor, DestructionAwareBeanPostProcessor, Ordered, EmbeddedValueResolverAware, BeanNameAware, BeanFactoryAware, ApplicationContextAware, SmartInitializingSingleton, ApplicationListener<ContextRefreshedEvent>, DisposableBean
TaskScheduler
によって呼び出される @Scheduled
でアノテーションされたメソッドを登録する Bean ポストプロセッサー。 このポストプロセッサーは、Spring の <task:annotation-driven>
XML 要素によって、また @EnableScheduling
アノテーションによって自動的に登録されます。
コンテナー内の SchedulingConfigurer
インスタンスを自動検出し、使用するスケジューラーのカスタマイズまたはタスク登録(例: Trigger
タスクの登録)のきめ細かな制御を可能にします。使用方法の詳細については、@EnableScheduling
javadoc を参照してください。
Scheduled
, EnableScheduling
, SchedulingConfigurer
, TaskScheduler
, ScheduledTaskRegistrar
, AsyncAnnotationBeanPostProcessor
修飾子と型 | フィールドと説明 |
---|---|
static StringSE | DEFAULT_TASK_SCHEDULER_BEAN_NAME 取得する TaskScheduler Bean のデフォルト名: "taskScheduler"。 |
protected Log | logger |
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
コンストラクターと説明 |
---|
ScheduledAnnotationBeanPostProcessor() |
修飾子と型 | メソッドと説明 |
---|---|
void | afterSingletonsInstantiated() シングルトン事前インスタンス化フェーズの終わりに呼び出され、すべての通常のシングルトン Bean がすでに作成されていることを保証します。 |
void | destroy() シングルトンの破棄時に BeanFactory によって呼び出されます。 |
int | getOrder() このオブジェクトの順序値を取得します。 |
void | onApplicationEvent(ContextRefreshedEvent event) アプリケーションイベントを処理します。 |
ObjectSE | postProcessAfterInitialization(ObjectSE bean, StringSE beanName) Bean 初期化コールバック(InitializingBean の afterPropertiesSet またはカスタム init メソッドなど)の後に、指定された新しい Bean インスタンスにこの BeanPostProcessor を適用します。 |
void | postProcessBeforeDestruction(ObjectSE bean, StringSE beanName) 破棄する前に、この BeanPostProcessor を指定の Bean インスタンスに適用します。 |
ObjectSE | postProcessBeforeInitialization(ObjectSE bean, StringSE beanName) Bean 初期化コールバック(InitializingBean の afterPropertiesSet またはカスタム init メソッドなど)の前に、この BeanPostProcessor を指定された新しい Bean インスタンスに適用します。 |
void | postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, ClassSE<?> beanType, StringSE beanName) 指定された Bean の指定されたマージ済み Bean 定義を後処理します。 |
protected void | processScheduled(Scheduled scheduled, MethodSE method, ObjectSE bean) |
boolean | requiresDestruction(ObjectSE bean) 指定された Bean インスタンスがこのポストプロセッサーによる破棄を必要とするかどうかを判断します。 |
void | setApplicationContext(ApplicationContext applicationContext) ApplicationContext の設定はオプションです。設定すると、登録されたタスクは ContextRefreshedEvent フェーズでアクティブになります。設定されていない場合、afterSingletonsInstantiated() 時に発生します。 |
void | setBeanFactory(BeanFactory beanFactory) BeanFactory を使用可能にすることはオプションです。設定しない場合、SchedulingConfigurer Bean は自動検出されず、scheduler を明示的に構成する必要があります。 |
void | setBeanName(StringSE beanName) この Bean を作成した Bean ファクトリで Bean の名前を設定します。 |
void | setEmbeddedValueResolver(StringValueResolver resolver) StringValueResolver を設定して、埋め込まれた定義値の解決に使用します。 |
void | setScheduler(ObjectSE scheduler) スケジュールされたメソッドを呼び出す TaskScheduler 、または TaskScheduler としてラップされる ScheduledExecutorService SE を設定します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public static final StringSE DEFAULT_TASK_SCHEDULER_BEAN_NAME
TaskScheduler
Bean のデフォルト名: "taskScheduler"。初期ルックアップは型ごとに行われることに注意してください。これは、コンテキストで複数のスケジューラ Bean が見つかった場合のフォールバックです。
protected final Log logger
public int getOrder()
Ordered
値が高いほど、優先度は低くなります。結果として、最も低い値を持つオブジェクトが最高の優先度を持ちます(サーブレット load-on-startup
の値に多少似ています)。
同じ順序の値は、影響を受けるオブジェクトの任意のソート位置になります。
Ordered
の getOrder
Ordered.HIGHEST_PRECEDENCE
, Ordered.LOWEST_PRECEDENCE
public void setScheduler(ObjectSE scheduler)
TaskScheduler
、または TaskScheduler としてラップされる ScheduledExecutorService
SE を設定します。 指定されていない場合は、デフォルトのスケジューラ解決が適用されます。コンテキスト内で一意の TaskScheduler
Bean を検索するか、それ以外の場合は "taskScheduler" という名前の TaskScheduler
Bean を検索します。同じ検索が ScheduledExecutorService
SE Bean に対しても実行されます。どちらも解決できない場合は、レジストラ内にローカルのシングルスレッドのデフォルトスケジューラが作成されます。
public void setEmbeddedValueResolver(StringValueResolver resolver)
EmbeddedValueResolverAware
EmbeddedValueResolverAware
の setEmbeddedValueResolver
public void setBeanName(StringSE beanName)
BeanNameAware
通常の Bean プロパティの設定後、ただし InitializingBean.afterPropertiesSet()
またはカスタム init メソッドなどの init コールバックの前に呼び出されます。
BeanNameAware
の setBeanName
beanName
- ファクトリ内の Bean の名前。この名前は、ファクトリで使用される実際の Bean 名であり、最初に指定した名前とは異なる場合があります。特に内部 Bean 名の場合、実際の Bean 名は "#..." サフィックスを追加することで一意になります。必要に応じて、BeanFactoryUtils.originalBeanName(String)
メソッドを使用して、元の Bean 名(サフィックスなし)を抽出します。public void setBeanFactory(BeanFactory beanFactory)
BeanFactory
を使用可能にすることはオプションです。設定しない場合、SchedulingConfigurer
Bean は自動検出されず、scheduler
を明示的に構成する必要があります。BeanFactoryAware
の setBeanFactory
beanFactory
- 所有 BeanFactory(非 null
)。Bean は、ファクトリのメソッドをすぐに呼び出すことができます。BeanInitializationException
public void setApplicationContext(ApplicationContext applicationContext)
ApplicationContext
の設定はオプションです。設定すると、登録されたタスクは ContextRefreshedEvent
フェーズでアクティブになります。設定されていない場合、afterSingletonsInstantiated()
時に発生します。ApplicationContextAware
の setApplicationContext
applicationContext
- このオブジェクトによって使用される ApplicationContext オブジェクト BeanInitializationException
public void afterSingletonsInstantiated()
SmartInitializingSingleton
ListableBeanFactory.getBeansOfType(java.lang.Class<T>)
呼び出しは、ブートストラップ中に偶発的な副作用を引き起こしません。 注意 : このコールバックは、BeanFactory
ブートストラップ後にオンデマンドで遅延初期化されたシングルトン Bean ではトリガーされず、他の Bean スコープでもトリガーされません。意図されたブートストラップセマンティクスのみを使用する Bean には慎重に使用してください。
SmartInitializingSingleton
の afterSingletonsInstantiated
public void onApplicationEvent(ContextRefreshedEvent event)
ApplicationListener
ApplicationListener<ContextRefreshedEvent>
の onApplicationEvent
event
- 応答するイベント public void postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, ClassSE<?> beanType, StringSE beanName)
MergedBeanDefinitionPostProcessor
MergedBeanDefinitionPostProcessor
の postProcessMergedBeanDefinition
beanDefinition
- Bean のマージされた Bean 定義 beanType
- 管理対象 Bean インスタンスの実際の型 beanName
- Bean の名前 public ObjectSE postProcessBeforeInitialization(ObjectSE bean, StringSE beanName)
BeanPostProcessor
afterPropertiesSet
またはカスタム init メソッドなど)の前に、この BeanPostProcessor を指定された新しい Bean インスタンスに適用します。Bean にはすでにプロパティ値が入力されています。返された Bean インスタンスは、元のラッパーの可能性があります。 デフォルトの実装は、指定された bean
をそのまま返します。
BeanPostProcessor
の postProcessBeforeInitialization
bean
- 新しい Bean インスタンス beanName
- Bean の名前 null
の場合、後続の BeanPostProcessors は呼び出されません InitializingBean.afterPropertiesSet()
public ObjectSE postProcessAfterInitialization(ObjectSE bean, StringSE beanName)
BeanPostProcessor
afterPropertiesSet
またはカスタム init メソッドなど)の後に、指定された新しい Bean インスタンスにこの BeanPostProcessor を適用します。Bean にはすでにプロパティ値が入力されています。返された Bean インスタンスは、元のラッパーの可能性があります。FactoryBean の場合、このコールバックは、FactoryBean インスタンスと、FactoryBean によって作成されたオブジェクト(Spring 2.0 以降)の両方に対して呼び出されます。ポストプロセッサーは、対応する bean instanceof FactoryBean
チェックを介して、FactoryBean または作成されたオブジェクトのいずれか、あるいはその両方に適用するかどうかを決定できます。
このコールバックは、他のすべての BeanPostProcessor コールバックとは対照的に、InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation(java.lang.Class<?>, java.lang.String)
メソッドによってトリガーされた短絡後にも呼び出されます。
デフォルトの実装は、指定された bean
をそのまま返します。
BeanPostProcessor
の postProcessAfterInitialization
bean
- 新しい Bean インスタンス beanName
- Bean の名前 null
の場合、後続の BeanPostProcessors は呼び出されません InitializingBean.afterPropertiesSet()
, FactoryBean
protected void processScheduled(Scheduled scheduled, MethodSE method, ObjectSE bean)
public void postProcessBeforeDestruction(ObjectSE bean, StringSE beanName)
DestructionAwareBeanPostProcessor
DisposableBean の destroy
およびカスタムの destroy メソッドと同様に、このコールバックはファクトリ内のシングルトン Bean(内部 Bean を含む)にのみ適用されます。
DestructionAwareBeanPostProcessor
の postProcessBeforeDestruction
bean
- 破棄される Bean インスタンス beanName
- Bean の名前 DisposableBean
, AbstractBeanDefinition.setDestroyMethodName(java.lang.String)
public boolean requiresDestruction(ObjectSE bean)
DestructionAwareBeanPostProcessor
注 : 最近追加されたものとしても、この方法は SmartDABPP サブインターフェースではなく DestructionAwareBeanPostProcessor
自体に導入されています。これにより、Spring <4.3 との互換性を維持しながら、既存の DestructionAwareBeanPostProcessor
実装で requiresDestruction
ロジックを簡単に提供できます。また、requiresDestruction
を Spring 5 の Java 8 デフォルトメソッドとして宣言することも簡単です。
DestructionAwareBeanPostProcessor
の実装がこのメソッドの具体的な実装を提供しない場合、Spring の呼び出しメカニズムは、true
(4.3 の前の有効なデフォルト、および Spring 5 の Java 8 メソッドのデフォルトになる)を返すメソッドを暗黙的に想定します。
DestructionAwareBeanPostProcessor
の requiresDestruction
bean
- チェックする Bean インスタンス DestructionAwareBeanPostProcessor.postProcessBeforeDestruction(java.lang.Object, java.lang.String)
が最終的にこの Bean インスタンスのために呼び出されることになっている場合は true
、または不要な場合は false
public void destroy()
DisposableBean
DisposableBean
の destroy