org.springframework.aop.interceptor
Class AsyncExecutionAspectSupport

java.lang.Object
  extended by org.springframework.aop.interceptor.AsyncExecutionAspectSupport
All Implemented Interfaces:
Aware, BeanFactoryAware
Direct Known Subclasses:
AsyncExecutionInterceptor

public abstract class AsyncExecutionAspectSupport
extends Object
implements BeanFactoryAware

Base class for asynchronous method execution aspects, such as AnnotationAsyncExecutionInterceptor or org.springframework.scheduling.aspectj.AnnotationAsyncExecutionAspect.

Provides support for executor qualification on a method-by-method basis. AsyncExecutionAspectSupport objects must be constructed with a default Executor, but each individual method may further qualify a specific Executor bean to be used when executing it, e.g. through an annotation attribute.

Since:
3.1.2
Author:
Chris Beams

Constructor Summary
AsyncExecutionAspectSupport(Executor defaultExecutor)
          Create a new AsyncExecutionAspectSupport, using the provided default executor unless individual async methods indicate via qualifier that a more specific executor should be used.
 
Method Summary
protected  AsyncTaskExecutor determineAsyncExecutor(Method method)
          Determine the specific executor to use when executing the given method.
protected abstract  String getExecutorQualifier(Method method)
          Return the qualifier or bean name of the executor to be used when executing the given async method, typically specified in the form of an annotation attribute.
 void setBeanFactory(BeanFactory beanFactory)
          Set the BeanFactory to be used when looking up executors by qualifier.
 void setExecutor(Executor defaultExecutor)
          Supply the executor to be used when executing async methods.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AsyncExecutionAspectSupport

public AsyncExecutionAspectSupport(Executor defaultExecutor)
Create a new AsyncExecutionAspectSupport, using the provided default executor unless individual async methods indicate via qualifier that a more specific executor should be used.

Parameters:
defaultExecutor - the executor to use when executing asynchronous methods
Method Detail

setExecutor

public void setExecutor(Executor defaultExecutor)
Supply the executor to be used when executing async methods.

Parameters:
defaultExecutor - the Executor (typically a Spring AsyncTaskExecutor or ExecutorService) to delegate to unless a more specific executor has been requested via a qualifier on the async method, in which case the executor will be looked up at invocation time against the enclosing bean factory.
See Also:
getExecutorQualifier(java.lang.reflect.Method), setBeanFactory(BeanFactory)

setBeanFactory

public void setBeanFactory(BeanFactory beanFactory)
                    throws BeansException
Set the BeanFactory to be used when looking up executors by qualifier.

Specified by:
setBeanFactory in interface BeanFactoryAware
Parameters:
beanFactory - owning BeanFactory (never null). The bean can immediately call methods on the factory.
Throws:
BeansException - in case of initialization errors
See Also:
BeanInitializationException

getExecutorQualifier

protected abstract String getExecutorQualifier(Method method)
Return the qualifier or bean name of the executor to be used when executing the given async method, typically specified in the form of an annotation attribute. Returning an empty string or null indicates that no specific executor has been specified and that the default executor should be used.

Parameters:
method - the method to inspect for executor qualifier metadata
Returns:
the qualifier if specified, otherwise empty string or null
See Also:
determineAsyncExecutor(Method)

determineAsyncExecutor

protected AsyncTaskExecutor determineAsyncExecutor(Method method)
Determine the specific executor to use when executing the given method.