public abstract class AsyncExecutionAspectSupport extends Object implements BeanFactoryAware
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
bean to be used when executing it, e.g. through an annotation attribute.
|Constructor and Description|
Create a new instance with a default
Create a new
|Modifier and Type||Method and Description|
Determine the specific executor to use when executing the given method.
Delegate for actually executing the given task with the chosen executor.
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.
Handles a fatal error thrown while asynchronously invoking the specified
Supply the executor to be used when executing async methods.
protected final Log logger
public AsyncExecutionAspectSupport(Executor defaultExecutor, AsyncUncaughtExceptionHandler exceptionHandler)
AsyncExecutionAspectSupport, using the provided default executor unless individual async methods indicate via qualifier that a more specific executor should be used.
defaultExecutor- the executor to use when executing asynchronous methods
public void setExecutor(Executor defaultExecutor)
Executor(typically a Spring
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.
public void setExceptionHandler(AsyncUncaughtExceptionHandler exceptionHandler)
AsyncUncaughtExceptionHandlerto use to handle exceptions thrown by invoking asynchronous methods with a
public void setBeanFactory(BeanFactory beanFactory)
BeanFactoryto be used when looking up executors by qualifier.
protected AsyncTaskExecutor determineAsyncExecutor(Method method)
null, but just if no default executor has been set)
nullindicates that no specific executor has been specified and that the default executor should be used.
method- the method to inspect for executor qualifier metadata
protected Object doSubmit(Callable<Object> task, AsyncTaskExecutor executor, Class<?> returnType)
If the return type of the method is a
Future object, the original
exception can be propagated by just throwing it at the higher level. However,
for all other cases, the exception will not be transmitted back to the client.
In that later case, the current
AsyncUncaughtExceptionHandler will be
used to manage such exception.
ex- the exception to handle
method- the method that was invoked
params- the parameters used to invoke the method