org.springframework.aop.interceptor

## Class AsyncExecutionAspectSupport

- java.lang.Object
- - org.springframework.aop.interceptor.AsyncExecutionAspectSupport

- All Implemented Interfaces:
    Aware, BeanFactoryAware
  Direct Known Subclasses:
    AsyncExecutionInterceptor

      public abstract class AsyncExecutionAspectSupport
      extends Object
      implements BeanFactoryAware

  Base class for asynchronous method execution aspects, such as `AnnotationAsyncExecutionInterceptor` or `org.springframework.scheduling.aspectj.AnnotationAsyncExecutionAspect`.

  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 `Executor` bean to be used when executing it, e.g. through an annotation attribute.

  Since:
    3.1.2
  Author:
    Chris Beams

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `AsyncExecutionAspectSupport(Executor defaultExecutor)` Create a new `AsyncExecutionAspectSupport`, using the provided default executor unless individual async methods indicate via qualifier that a more specific executor should be used.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected AsyncTaskExecutor` | `determineAsyncExecutor(Method method)` Determine the specific executor to use when executing the given method.
    `protected abstract String` | `getExecutorQualifier(Method method)` 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.
    `void` | `setBeanFactory(BeanFactory beanFactory)` Set the `BeanFactory` to be used when looking up executors by qualifier.
    `void` | `setExecutor(Executor defaultExecutor)` Supply the executor to be used when executing async methods.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### AsyncExecutionAspectSupport

          public AsyncExecutionAspectSupport(Executor defaultExecutor)

      Create a new `AsyncExecutionAspectSupport`, using the provided default executor unless individual async methods indicate via qualifier that a more specific executor should be used.
      Parameters:
        `defaultExecutor` - the executor to use when executing asynchronous methods

  - ### Method Detail

    - #### setExecutor

          public void setExecutor(Executor defaultExecutor)

      Supply the executor to be used when executing async methods.
      Parameters:
        `defaultExecutor` - the `Executor` (typically a Spring `AsyncTaskExecutor` or `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.
      See Also:
        `getExecutorQualifier(java.lang.reflect.Method)`, `setBeanFactory(BeanFactory)`

    - #### setBeanFactory

          public void setBeanFactory(BeanFactory beanFactory)
                              throws BeansException

      Set the `BeanFactory` to be used when looking up executors by qualifier.
      Specified by:
        `setBeanFactory` in interface `BeanFactoryAware`
      Parameters:
        `beanFactory` - owning BeanFactory (never `null`). The bean can immediately call methods on the factory.
      Throws:
        `BeansException` - in case of initialization errors
      See Also:
        `BeanInitializationException`

    - #### determineAsyncExecutor

          protected AsyncTaskExecutor determineAsyncExecutor(Method method)

      Determine the specific executor to use when executing the given method.
      Returns:
        the executor to use (never `null`)

    - #### getExecutorQualifier

          protected abstract String getExecutorQualifier(Method method)

      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. Returning an empty string or `null` indicates that no specific executor has been specified and that the default executor should be used.
      Parameters:
        `method` - the method to inspect for executor qualifier metadata
      Returns:
        the qualifier if specified, otherwise empty string or `null`
      See Also:
        `determineAsyncExecutor(Method)`