org.springframework.scheduling.annotation
Class AnnotationAsyncExecutionInterceptor

java.lang.Object
  extended by org.springframework.aop.interceptor.AsyncExecutionAspectSupport
      extended by org.springframework.aop.interceptor.AsyncExecutionInterceptor
          extended by org.springframework.scheduling.annotation.AnnotationAsyncExecutionInterceptor
All Implemented Interfaces:
Advice, Interceptor, MethodInterceptor, Aware, BeanFactoryAware, Ordered

public class AnnotationAsyncExecutionInterceptor
extends AsyncExecutionInterceptor

Specialization of AsyncExecutionInterceptor that delegates method execution to an Executor based on the Async annotation. Specifically designed to support use of Async.value() executor qualification mechanism introduced in Spring 3.1.2. Supports detecting qualifier metadata via @Async at the method or declaring class level. See getExecutorQualifier(Method) for details.

Since:
3.1.2
Author:
Chris Beams
See Also:
Async, AsyncAnnotationAdvisor

Field Summary
 
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
 
Constructor Summary
AnnotationAsyncExecutionInterceptor(Executor defaultExecutor)
          Create a new AnnotationAsyncExecutionInterceptor with the given executor.
 
Method Summary
protected  String getExecutorQualifier(Method method)
          Return the qualifier or bean name of the executor to be used when executing the given method, specified via Async.value() at the method or declaring class level.
 
Methods inherited from class org.springframework.aop.interceptor.AsyncExecutionInterceptor
getOrder, invoke
 
Methods inherited from class org.springframework.aop.interceptor.AsyncExecutionAspectSupport
determineAsyncExecutor, setBeanFactory, setExecutor
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AnnotationAsyncExecutionInterceptor

public AnnotationAsyncExecutionInterceptor(Executor defaultExecutor)
Create a new AnnotationAsyncExecutionInterceptor with the given executor.

Parameters:
defaultExecutor - the executor to be used by default if no more specific executor has been qualified at the method level using Async.value().
Method Detail

getExecutorQualifier

protected String getExecutorQualifier(Method method)
Return the qualifier or bean name of the executor to be used when executing the given method, specified via Async.value() at the method or declaring class level. If @Async is specified at both the method and class level, the method's #value takes precedence (even if empty string, indicating that the default executor should be used preferentially).

Overrides:
getExecutorQualifier in class AsyncExecutionInterceptor
Parameters:
method - the method to inspect for executor qualifier metadata
Returns:
the qualifier if specified, otherwise empty string indicating that the default executor should be used
See Also:
AsyncExecutionAspectSupport.determineAsyncExecutor(Method)