Class AsyncExecutionInterceptor

  extended by org.springframework.aop.interceptor.AsyncExecutionInterceptor
All Implemented Interfaces:
Advice, Interceptor, MethodInterceptor, Ordered

public class AsyncExecutionInterceptor
extends Object
implements MethodInterceptor, Ordered

AOP Alliance MethodInterceptor that processes method invocations asynchronously, using a given AsyncTaskExecutor. Typically used with the org.springframework.context.task.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).

Juergen Hoeller
See Also:
Async, AsyncAnnotationAdvisor

Field Summary
Fields inherited from interface org.springframework.core.Ordered
Constructor Summary
AsyncExecutionInterceptor(AsyncTaskExecutor asyncExecutor)
          Create a new AsyncExecutionInterceptor.
AsyncExecutionInterceptor(Executor asyncExecutor)
          Create a new AsyncExecutionInterceptor.
Method Summary
 int getOrder()
          Return the order value of this object, with a higher value meaning greater in terms of sorting.
 Object invoke(MethodInvocation invocation)
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail


public AsyncExecutionInterceptor(AsyncTaskExecutor asyncExecutor)
Create a new AsyncExecutionInterceptor.

asyncExecutor - the Spring AsyncTaskExecutor to delegate to


public AsyncExecutionInterceptor(Executor asyncExecutor)
Create a new AsyncExecutionInterceptor.

asyncExecutor - the java.util.concurrent Executor to delegate to (typically a ExecutorService
Method Detail


public Object invoke(MethodInvocation invocation)
              throws Throwable
Specified by:
invoke in interface MethodInterceptor


public int getOrder()
Description copied from interface: Ordered
Return the order value of this object, with a higher value meaning greater in terms of sorting.

Normally 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).

Specified by:
getOrder in interface Ordered
the order value