public class AsyncExecutionInterceptor extends AsyncExecutionAspectSupport implements MethodInterceptor, Ordered
MethodInterceptor that processes method invocations
asynchronously, using a given AsyncTaskExecutor.
Typically used with the Async annotation.
In terms of target method signatures, any parameter types are supported.
However, the return type is constrained to either void or
java.util.concurrent.Future. In the latter case, the Future handle
returned from the proxy will be an actual asynchronous Future that can be used
to track the result of the asynchronous method execution. However, since the
target method needs to implement the same signature, it will have to return
a temporary Future handle that just passes the return value through
(like Spring's AsyncResult
or EJB 3.1's javax.ejb.AsyncResult).
As of Spring 3.1.2 the AnnotationAsyncExecutionInterceptor subclass is
preferred for use due to its support for executor qualification in conjunction with
Spring's @Async annotation.
Async,
AsyncAnnotationAdvisor,
AnnotationAsyncExecutionInterceptorHIGHEST_PRECEDENCE, LOWEST_PRECEDENCE| Constructor and Description |
|---|
AsyncExecutionInterceptor(Executor defaultExecutor)
Create a new
AsyncExecutionInterceptor. |
| Modifier and Type | Method and Description |
|---|---|
protected String |
getExecutorQualifier(Method method)
This implementation is a no-op for compatibility in Spring 3.1.2.
|
int |
getOrder()
Return the order value of this object, with a
higher value meaning greater in terms of sorting.
|
Object |
invoke(MethodInvocation invocation)
Intercept the given method invocation, submit the actual calling of the method to
the correct task executor and return immediately to the caller.
|
determineAsyncExecutor, setBeanFactory, setExecutorpublic AsyncExecutionInterceptor(Executor defaultExecutor)
AsyncExecutionInterceptor.defaultExecutor - the Executor (typically a Spring AsyncTaskExecutor
or ExecutorService) to delegate topublic Object invoke(MethodInvocation invocation) throws Throwable
invoke in interface MethodInterceptorinvocation - the method to intercept and make asynchronousFuture if the original method returns Future; null
otherwise.Throwableprotected String getExecutorQualifier(Method method)
getExecutorQualifier in class AsyncExecutionAspectSupportmethod - the method to inspect for executor qualifier metadatanullAsyncExecutionAspectSupport.determineAsyncExecutor(Method)public int getOrder()
OrderedNormally starting with 0, with Integer.MAX_VALUE
indicating the greatest value. Same order values will result
in arbitrary positions for the affected objects.
Higher values can be interpreted as lower priority. As a consequence, the object with the lowest value has highest priority (somewhat analogous to Servlet "load-on-startup" values).