Class AsyncAnnotationAdvisor
- java.lang.Object
- org.springframework.aop.support.AbstractPointcutAdvisor
- org.springframework.scheduling.annotation.AsyncAnnotationAdvisor
- All Implemented Interfaces:
Serializable
,Advisor
,PointcutAdvisor
,Aware
,BeanFactoryAware
,Ordered
public class AsyncAnnotationAdvisor extends AbstractPointcutAdvisor implements BeanFactoryAware
Advisor that activates asynchronous method execution through theAsync
annotation. This annotation can be used at the method and type level in implementation classes as well as in service interfaces.This advisor detects the EJB 3.1
javax.ejb.Asynchronous
annotation as well, treating it exactly like Spring's ownAsync
. Furthermore, a custom async annotation type may get specified through the"asyncAnnotationType"
property.- Since:
- 3.0
- Author:
- Juergen Hoeller
- See Also:
PersistenceExceptionTranslationAdvisor
,Repository
,DataAccessException
,PersistenceExceptionTranslator
, Serialized Form
Field Summary
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
Constructor Summary
Constructors Constructor Description AsyncAnnotationAdvisor()
Create a newAsyncAnnotationAdvisor
for bean-style configuration.AsyncAnnotationAdvisor(Executor executor, AsyncUncaughtExceptionHandler exceptionHandler)
Create a newAsyncAnnotationAdvisor
for the given task executor.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected Advice
buildAdvice(Executor executor, AsyncUncaughtExceptionHandler exceptionHandler)
protected Pointcut
buildPointcut(Set<Class<? extends Annotation>> asyncAnnotationTypes)
Calculate a pointcut for the given async annotation types, if any.Advice
getAdvice()
Return the advice part of this aspect.Pointcut
getPointcut()
Get the Pointcut that drives this advisor.void
setAsyncAnnotationType(Class<? extends Annotation> asyncAnnotationType)
Set the 'async' annotation type.void
setBeanFactory(BeanFactory beanFactory)
Set theBeanFactory
to be used when looking up executors by qualifier.void
setTaskExecutor(Executor executor)
Specify the default task executor to use for asynchronous methods.Methods inherited from class org.springframework.aop.support.AbstractPointcutAdvisor
equals, getOrder, hashCode, isPerInstance, setOrder
Constructor Detail
AsyncAnnotationAdvisor
public AsyncAnnotationAdvisor()
Create a newAsyncAnnotationAdvisor
for bean-style configuration.
AsyncAnnotationAdvisor
public AsyncAnnotationAdvisor(Executor executor, AsyncUncaughtExceptionHandler exceptionHandler)
Create a newAsyncAnnotationAdvisor
for the given task executor.- Parameters:
executor
- the task executor to use for asynchronous methods (can benull
to trigger default executor resolution)exceptionHandler
- theAsyncUncaughtExceptionHandler
to use to handle unexpected exception thrown by asynchronous method executions- See Also:
AsyncExecutionInterceptor.getDefaultExecutor(BeanFactory)
Method Detail
setTaskExecutor
public void setTaskExecutor(Executor executor)
Specify the default task executor to use for asynchronous methods.
setAsyncAnnotationType
public void setAsyncAnnotationType(Class<? extends Annotation> asyncAnnotationType)
Set the 'async' annotation type.The default async annotation type is the
Async
annotation, as well as the EJB 3.1javax.ejb.Asynchronous
annotation (if present).This setter property exists so that developers can provide their own (non-Spring-specific) annotation type to indicate that a method is to be executed asynchronously.
- Parameters:
asyncAnnotationType
- the desired annotation type
setBeanFactory
public void setBeanFactory(BeanFactory beanFactory)
Set theBeanFactory
to be used when looking up executors by qualifier.- Specified by:
setBeanFactory
in interfaceBeanFactoryAware
- Parameters:
beanFactory
- owning BeanFactory (nevernull
). The bean can immediately call methods on the factory.- See Also:
BeanInitializationException
getAdvice
public Advice getAdvice()
Description copied from interface:Advisor
Return the advice part of this aspect. An advice may be an interceptor, a before advice, a throws advice, etc.- Specified by:
getAdvice
in interfaceAdvisor
- Returns:
- the advice that should apply if the pointcut matches
- See Also:
MethodInterceptor
,BeforeAdvice
,ThrowsAdvice
,AfterReturningAdvice
getPointcut
public Pointcut getPointcut()
Description copied from interface:PointcutAdvisor
Get the Pointcut that drives this advisor.- Specified by:
getPointcut
in interfacePointcutAdvisor
buildAdvice
protected Advice buildAdvice(Executor executor, AsyncUncaughtExceptionHandler exceptionHandler)
buildPointcut
protected Pointcut buildPointcut(Set<Class<? extends Annotation>> asyncAnnotationTypes)
Calculate a pointcut for the given async annotation types, if any.- Parameters:
asyncAnnotationTypes
- the async annotation types to introspect- Returns:
- the applicable Pointcut object, or
null
if none