类 ScheduledAnnotationBeanPostProcessor
- java.lang.Object
- org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor
- 所有已实现的接口:
EventListener
,Aware
,BeanFactoryAware
,BeanNameAware
,BeanPostProcessor
,DestructionAwareBeanPostProcessor
,DisposableBean
,SmartInitializingSingleton
,MergedBeanDefinitionPostProcessor
,ApplicationContextAware
,ApplicationListener<ContextRefreshedEvent>
,EmbeddedValueResolverAware
,Ordered
public class ScheduledAnnotationBeanPostProcessor extends Object implements MergedBeanDefinitionPostProcessor, DestructionAwareBeanPostProcessor, Ordered, EmbeddedValueResolverAware, BeanNameAware, BeanFactoryAware, ApplicationContextAware, SmartInitializingSingleton, ApplicationListener<ContextRefreshedEvent>, DisposableBean
Bean post-processor that registers methods annotated with @Scheduled
to be invoked by aTaskScheduler
according to the "fixedRate", "fixedDelay", or "cron" expression provided via the annotation.This post-processor is automatically registered by Spring's
<task:annotation-driven>
XML element, and also by the@EnableScheduling
annotation.Autodetects any
SchedulingConfigurer
instances in the container, allowing for customization of the scheduler to be used or for fine-grained control over task registration (e.g. registration ofTrigger
tasks. See the @EnableScheduling
javadocs for complete usage details.- 从以下版本开始:
- 3.0
- 作者:
- Mark Fisher, Juergen Hoeller, Chris Beams, Elizabeth Chatman
- 另请参阅:
Scheduled
,EnableScheduling
,SchedulingConfigurer
,TaskScheduler
,ScheduledTaskRegistrar
,AsyncAnnotationBeanPostProcessor
字段概要
字段 修饰符和类型 字段 说明 static String
DEFAULT_TASK_SCHEDULER_BEAN_NAME
The default name of theTaskScheduler
bean to pick up: "taskScheduler".protected Log
logger
从接口继承的字段 org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
构造器概要
构造器 构造器 说明 ScheduledAnnotationBeanPostProcessor()
方法概要
所有方法 实例方法 具体方法 修饰符和类型 方法 说明 void
afterSingletonsInstantiated()
Invoked right at the end of the singleton pre-instantiation phase, with a guarantee that all regular singleton beans have been created already.void
destroy()
Invoked by the containingBeanFactory
on destruction of a bean.int
getOrder()
Get the order value of this object.void
onApplicationEvent(ContextRefreshedEvent event)
Handle an application event.Object
postProcessAfterInitialization(Object bean, String beanName)
Apply this BeanPostProcessor to the given new bean instance after any bean initialization callbacks (like InitializingBean'safterPropertiesSet
or a custom init-method).void
postProcessBeforeDestruction(Object bean, String beanName)
Apply this BeanPostProcessor to the given bean instance before its destruction, e.g. invoking custom destruction callbacks.Object
postProcessBeforeInitialization(Object bean, String beanName)
Apply this BeanPostProcessor to the given new bean instance before any bean initialization callbacks (like InitializingBean'safterPropertiesSet
or a custom init-method).void
postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, Class<?> beanType, String beanName)
Post-process the given merged bean definition for the specified bean.protected void
processScheduled(Scheduled scheduled, Method method, Object bean)
Process the given@Scheduled
method declaration on the given bean.boolean
requiresDestruction(Object bean)
Determine whether the given bean instance requires destruction by this post-processor.void
setApplicationContext(ApplicationContext applicationContext)
Setting anApplicationContext
is optional: If set, registered tasks will be activated in theContextRefreshedEvent
phase; if not set, it will happen atafterSingletonsInstantiated()
time.void
setBeanFactory(BeanFactory beanFactory)
Making aBeanFactory
available is optional; if not set,SchedulingConfigurer
beans won't get autodetected and ascheduler
has to be explicitly configured.void
setBeanName(String beanName)
Set the name of the bean in the bean factory that created this bean.void
setEmbeddedValueResolver(StringValueResolver resolver)
Set the StringValueResolver to use for resolving embedded definition values.void
setScheduler(Object scheduler)
Set theTaskScheduler
that will invoke the scheduled methods, or aScheduledExecutorService
to be wrapped as a TaskScheduler.
字段详细资料
DEFAULT_TASK_SCHEDULER_BEAN_NAME
public static final String DEFAULT_TASK_SCHEDULER_BEAN_NAME
The default name of theTaskScheduler
bean to pick up: "taskScheduler".Note that the initial lookup happens by type; this is just the fallback in case of multiple scheduler beans found in the context.
- 从以下版本开始:
- 4.2
- 另请参阅:
- 常量字段值
构造器详细资料
ScheduledAnnotationBeanPostProcessor
public ScheduledAnnotationBeanPostProcessor()
方法详细资料
getOrder
public int getOrder()
从接口复制的说明:Ordered
Get the order value of this object.Higher values are interpreted as lower priority. As a consequence, the object with the lowest value has the highest priority (somewhat analogous to Servlet
load-on-startup
values).Same order values will result in arbitrary sort positions for the affected objects.
- 指定者:
getOrder
在接口中Ordered
- 返回:
- the order value
- 另请参阅:
Ordered.HIGHEST_PRECEDENCE
,Ordered.LOWEST_PRECEDENCE
setScheduler
public void setScheduler(Object scheduler)
Set theTaskScheduler
that will invoke the scheduled methods, or aScheduledExecutorService
to be wrapped as a TaskScheduler.If not specified, default scheduler resolution will apply: searching for a unique
TaskScheduler
bean in the context, or for aTaskScheduler
bean named "taskScheduler" otherwise; the same lookup will also be performed for aScheduledExecutorService
bean. If neither of the two is resolvable, a local single-threaded default scheduler will be created within the registrar.
setEmbeddedValueResolver
public void setEmbeddedValueResolver(StringValueResolver resolver)
从接口复制的说明:EmbeddedValueResolverAware
Set the StringValueResolver to use for resolving embedded definition values.
setBeanName
public void setBeanName(String beanName)
从接口复制的说明:BeanNameAware
Set the name of the bean in the bean factory that created this bean.Invoked after population of normal bean properties but before an init callback such as
InitializingBean.afterPropertiesSet()
or a custom init-method.- 指定者:
setBeanName
在接口中BeanNameAware
- 参数:
beanName
- the name of the bean in the factory. Note that this name is the actual bean name used in the factory, which may differ from the originally specified name: in particular for inner bean names, the actual bean name might have been made unique through appending "#..." suffixes. Use theBeanFactoryUtils.originalBeanName(String)
method to extract the original bean name (without suffix), if desired.
setBeanFactory
public void setBeanFactory(BeanFactory beanFactory)
Making aBeanFactory
available is optional; if not set,SchedulingConfigurer
beans won't get autodetected and ascheduler
has to be explicitly configured.- 指定者:
setBeanFactory
在接口中BeanFactoryAware
- 参数:
beanFactory
- owning BeanFactory (nevernull
). The bean can immediately call methods on the factory.- 另请参阅:
BeanInitializationException
setApplicationContext
public void setApplicationContext(ApplicationContext applicationContext)
Setting anApplicationContext
is optional: If set, registered tasks will be activated in theContextRefreshedEvent
phase; if not set, it will happen atafterSingletonsInstantiated()
time.- 指定者:
setApplicationContext
在接口中ApplicationContextAware
- 参数:
applicationContext
- the ApplicationContext object to be used by this object- 另请参阅:
BeanInitializationException
afterSingletonsInstantiated
public void afterSingletonsInstantiated()
从接口复制的说明:SmartInitializingSingleton
Invoked right at the end of the singleton pre-instantiation phase, with a guarantee that all regular singleton beans have been created already.ListableBeanFactory.getBeansOfType(java.lang.Class<T>)
calls within this method won't trigger accidental side effects during bootstrap.NOTE: This callback won't be triggered for singleton beans lazily initialized on demand after
BeanFactory
bootstrap, and not for any other bean scope either. Carefully use it for beans with the intended bootstrap semantics only.
onApplicationEvent
public void onApplicationEvent(ContextRefreshedEvent event)
从接口复制的说明:ApplicationListener
Handle an application event.- 指定者:
onApplicationEvent
在接口中ApplicationListener<ContextRefreshedEvent>
- 参数:
event
- the event to respond to
postProcessMergedBeanDefinition
public void postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, Class<?> beanType, String beanName)
从接口复制的说明:MergedBeanDefinitionPostProcessor
Post-process the given merged bean definition for the specified bean.- 指定者:
postProcessMergedBeanDefinition
在接口中MergedBeanDefinitionPostProcessor
- 参数:
beanDefinition
- the merged bean definition for the beanbeanType
- the actual type of the managed bean instancebeanName
- the name of the bean
postProcessBeforeInitialization
public Object postProcessBeforeInitialization(Object bean, String beanName)
从接口复制的说明:BeanPostProcessor
Apply this BeanPostProcessor to the given new bean instance before any bean initialization callbacks (like InitializingBean'safterPropertiesSet
or a custom init-method). The bean will already be populated with property values. The returned bean instance may be a wrapper around the original.- 指定者:
postProcessBeforeInitialization
在接口中BeanPostProcessor
- 参数:
bean
- the new bean instancebeanName
- the name of the bean- 返回:
- the bean instance to use, either the original or a wrapped one; if
null
, no subsequent BeanPostProcessors will be invoked - 另请参阅:
InitializingBean.afterPropertiesSet()
postProcessAfterInitialization
public Object postProcessAfterInitialization(Object bean, String beanName)
从接口复制的说明:BeanPostProcessor
Apply this BeanPostProcessor to the given new bean instance after any bean initialization callbacks (like InitializingBean'safterPropertiesSet
or a custom init-method). The bean will already be populated with property values. The returned bean instance may be a wrapper around the original.In case of a FactoryBean, this callback will be invoked for both the FactoryBean instance and the objects created by the FactoryBean (as of Spring 2.0). The post-processor can decide whether to apply to either the FactoryBean or created objects or both through corresponding
bean instanceof FactoryBean
checks.This callback will also be invoked after a short-circuiting triggered by a
InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation(java.lang.Class<?>, java.lang.String)
method, in contrast to all other BeanPostProcessor callbacks.- 指定者:
postProcessAfterInitialization
在接口中BeanPostProcessor
- 参数:
bean
- the new bean instancebeanName
- the name of the bean- 返回:
- the bean instance to use, either the original or a wrapped one; if
null
, no subsequent BeanPostProcessors will be invoked - 另请参阅:
InitializingBean.afterPropertiesSet()
,FactoryBean
processScheduled
protected void processScheduled(Scheduled scheduled, Method method, Object bean)
Process the given@Scheduled
method declaration on the given bean.- 参数:
scheduled
- the @Scheduled annotationmethod
- the method that the annotation has been declared onbean
- the target bean instance
postProcessBeforeDestruction
public void postProcessBeforeDestruction(Object bean, String beanName)
从接口复制的说明:DestructionAwareBeanPostProcessor
Apply this BeanPostProcessor to the given bean instance before its destruction, e.g. invoking custom destruction callbacks.Like DisposableBean's
destroy
and a custom destroy method, this callback will only apply to beans which the container fully manages the lifecycle for. This is usually the case for singletons and scoped beans.- 指定者:
postProcessBeforeDestruction
在接口中DestructionAwareBeanPostProcessor
- 参数:
bean
- the bean instance to be destroyedbeanName
- the name of the bean- 另请参阅:
DisposableBean.destroy()
,AbstractBeanDefinition.setDestroyMethodName(String)
requiresDestruction
public boolean requiresDestruction(Object bean)
从接口复制的说明:DestructionAwareBeanPostProcessor
Determine whether the given bean instance requires destruction by this post-processor.NOTE: Even as a late addition, this method has been introduced on
DestructionAwareBeanPostProcessor
itself instead of on a SmartDABPP subinterface. This allows existingDestructionAwareBeanPostProcessor
implementations to easily providerequiresDestruction
logic while retaining compatibility with Spring <4.3, and it is also an easier onramp to declaringrequiresDestruction
as a Java 8 default method in Spring 5.If an implementation of
DestructionAwareBeanPostProcessor
does not provide a concrete implementation of this method, Spring's invocation mechanism silently assumes a method returningtrue
(the effective default before 4.3, and the to-be-default in the Java 8 method in Spring 5).- 指定者:
requiresDestruction
在接口中DestructionAwareBeanPostProcessor
- 参数:
bean
- the bean instance to check- 返回:
true
ifDestructionAwareBeanPostProcessor.postProcessBeforeDestruction(java.lang.Object, java.lang.String)
is supposed to be called for this bean instance eventually, orfalse
if not needed
destroy
public void destroy()
从接口复制的说明:DisposableBean
Invoked by the containingBeanFactory
on destruction of a bean.- 指定者:
destroy
在接口中DisposableBean