Class AsyncExecutionInterceptor
- All Implemented Interfaces:
- Advice,- Interceptor,- MethodInterceptor,- Aware,- BeanFactoryAware,- Ordered
- Direct Known Subclasses:
- AnnotationAsyncExecutionInterceptor
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's jakarta.ejb.AsyncResult).
 
When the return type is java.util.concurrent.Future, any exception thrown
 during the execution can be accessed and managed by the caller. With void
 return type however, such exceptions cannot be transmitted back. In that case an
 AsyncUncaughtExceptionHandler can be registered to process such exceptions.
 
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.
- Since:
- 3.0
- Author:
- Juergen Hoeller, Chris Beams, Stephane Nicoll
- See Also:
- 
Field SummaryFields inherited from class org.springframework.aop.interceptor.AsyncExecutionAspectSupportDEFAULT_TASK_EXECUTOR_BEAN_NAME, loggerFields inherited from interface org.springframework.core.OrderedHIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
- 
Constructor SummaryConstructorsConstructorDescriptionAsyncExecutionInterceptor(Executor defaultExecutor) Create a new instance with a defaultAsyncUncaughtExceptionHandler.AsyncExecutionInterceptor(Executor defaultExecutor, AsyncUncaughtExceptionHandler exceptionHandler) Create a newAsyncExecutionInterceptor.
- 
Method SummaryModifier and TypeMethodDescriptionprotected ExecutorgetDefaultExecutor(BeanFactory beanFactory) This implementation searches for a uniqueTaskExecutorbean in the context, or for anExecutorbean named "taskExecutor" otherwise.protected StringgetExecutorQualifier(Method method) This implementation is a no-op for compatibility in Spring 3.1.2.intgetOrder()Get the order value of this 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.Methods inherited from class org.springframework.aop.interceptor.AsyncExecutionAspectSupportconfigure, determineAsyncExecutor, doSubmit, findQualifiedExecutor, handleError, setBeanFactory, setExceptionHandler, setExecutor
- 
Constructor Details- 
AsyncExecutionInterceptorCreate a new instance with a defaultAsyncUncaughtExceptionHandler.- Parameters:
- defaultExecutor- the- Executor(typically a Spring- AsyncTaskExecutoror- ExecutorService) to delegate to; as of 4.2.6, a local executor for this interceptor will be built otherwise
 
- 
AsyncExecutionInterceptorpublic AsyncExecutionInterceptor(@Nullable Executor defaultExecutor, AsyncUncaughtExceptionHandler exceptionHandler) Create a newAsyncExecutionInterceptor.- Parameters:
- defaultExecutor- the- Executor(typically a Spring- AsyncTaskExecutoror- ExecutorService) to delegate to; as of 4.2.6, a local executor for this interceptor will be built otherwise
- exceptionHandler- the- AsyncUncaughtExceptionHandlerto use
 
 
- 
- 
Method Details- 
invokeIntercept the given method invocation, submit the actual calling of the method to the correct task executor and return immediately to the caller.- Specified by:
- invokein interface- MethodInterceptor
- Parameters:
- invocation- the method to intercept and make asynchronous
- Returns:
- Futureif the original method returns- Future;- nullotherwise.
- Throws:
- Throwable- if the interceptors or the target object throws an exception
 
- 
getExecutorQualifierThis implementation is a no-op for compatibility in Spring 3.1.2. Subclasses may override to provide support for extracting qualifier information, e.g. via an annotation on the given method.- Specified by:
- getExecutorQualifierin class- AsyncExecutionAspectSupport
- Parameters:
- method- the method to inspect for executor qualifier metadata
- Returns:
- always null
- Since:
- 3.1.2
- See Also:
 
- 
getDefaultExecutorThis implementation searches for a uniqueTaskExecutorbean in the context, or for anExecutorbean named "taskExecutor" otherwise. If neither of the two is resolvable (e.g. if noBeanFactorywas configured at all), this implementation falls back to a newly createdSimpleAsyncTaskExecutorinstance for local use if no default could be found.- Overrides:
- getDefaultExecutorin class- AsyncExecutionAspectSupport
- Parameters:
- beanFactory- the BeanFactory to use for a default executor lookup
- Returns:
- the default executor, or nullif none available
- See Also:
 
- 
getOrderpublic int getOrder()Description copied from interface:OrderedGet the order value of this object.Higher values are interpreted as lower priority. As a consequence, the object with the lowest value has the highest priority (somewhat analogous to Servlet load-on-startupvalues).Same order values will result in arbitrary sort positions for the affected objects. 
 
-