org.springframework.scheduling.annotation

## Class AnnotationAsyncExecutionInterceptor

- java.lang.Object
- - org.springframework.aop.interceptor.AsyncExecutionAspectSupport
  - - org.springframework.aop.interceptor.AsyncExecutionInterceptor
    - - org.springframework.scheduling.annotation.AnnotationAsyncExecutionInterceptor

- All Implemented Interfaces:
    Advice, Interceptor, MethodInterceptor, Aware, BeanFactoryAware, Ordered

      public class AnnotationAsyncExecutionInterceptor
      extends AsyncExecutionInterceptor

  Specialization of `AsyncExecutionInterceptor` that delegates method execution to an `Executor` based on the `Async` annotation. Specifically designed to support use of `Async.value()` executor qualification mechanism introduced in Spring 3.1.2. Supports detecting qualifier metadata via `@Async` at the method or declaring class level. See `getExecutorQualifier(Method)` for details.
  Since:
    3.1.2
  Author:
    Chris Beams
  See Also:
    `Async`, `AsyncAnnotationAdvisor`

- - ### Field Summary

    - ### Fields inherited from interface org.springframework.core.Ordered

      `HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AnnotationAsyncExecutionInterceptor(Executor defaultExecutor)` Create a new `AnnotationAsyncExecutionInterceptor` with the given executor.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected String` | `getExecutorQualifier(Method method)` Return the qualifier or bean name of the executor to be used when executing the given method, specified via `Async.value()` at the method or declaring class level.

    - ### Methods inherited from class org.springframework.aop.interceptor.AsyncExecutionInterceptor

      `getOrder, invoke`

    - ### Methods inherited from class org.springframework.aop.interceptor.AsyncExecutionAspectSupport

      `determineAsyncExecutor, setBeanFactory, setExecutor`

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

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

- - ### Constructor Detail

    - #### AnnotationAsyncExecutionInterceptor

          public AnnotationAsyncExecutionInterceptor(Executor defaultExecutor)

      Create a new `AnnotationAsyncExecutionInterceptor` with the given executor.
      Parameters:
        `defaultExecutor` - the executor to be used by default if no more specific executor has been qualified at the method level using `Async.value()`

  - ### Method Detail

    - #### getExecutorQualifier

          protected String getExecutorQualifier(Method method)

      Return the qualifier or bean name of the executor to be used when executing the given method, specified via `Async.value()` at the method or declaring class level. If `@Async` is specified at both the method and class level, the method's `#value` takes precedence (even if empty string, indicating that the default executor should be used preferentially).
      Overrides:
        `getExecutorQualifier` in class `AsyncExecutionInterceptor`
      Parameters:
        `method` - the method to inspect for executor qualifier metadata
      Returns:
        the qualifier if specified, otherwise empty string indicating that the default executor should be used
      See Also:
        `AsyncExecutionAspectSupport.determineAsyncExecutor(Method)`