Package org.springframework.scheduling.annotation

# Class AsyncAnnotationAdvisor

java.lang.Object
org.springframework.aop.support.AbstractPointcutAdvisor
org.springframework.scheduling.annotation.AsyncAnnotationAdvisor

All Implemented Interfaces:
  `Serializable`, `org.springframework.aop.Advisor`, `org.springframework.aop.PointcutAdvisor`, `org.springframework.beans.factory.Aware`, `org.springframework.beans.factory.BeanFactoryAware`, `org.springframework.core.Ordered`

public class AsyncAnnotationAdvisor extends org.springframework.aop.support.AbstractPointcutAdvisor implements org.springframework.beans.factory.BeanFactoryAware
Advisor that activates asynchronous method execution through the `Async` annotation. This annotation can be used at the method and type level in implementation classes as well as in service interfaces.

This advisor detects the EJB 3.1 `jakarta.ejb.Asynchronous` annotation as well, treating it exactly like Spring's own `Async`. Furthermore, a custom async annotation type may get specified through the `"asyncAnnotationType"` property.

Since:
  3.0
Author:
  Juergen Hoeller
See Also:
  - `Async`
  - `AnnotationAsyncExecutionInterceptor`
  - Serialized Form

## Field Summary

### Fields inherited from interface org.springframework.aop.Advisor

`EMPTY_ADVICE`

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

`HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE`

## Constructor Summary

Constructors
Constructor
Description
`AsyncAnnotationAdvisor()`
Create a new `AsyncAnnotationAdvisor` for bean-style configuration.
`AsyncAnnotationAdvisor(Executor executor, org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler exceptionHandler)`
Create a new `AsyncAnnotationAdvisor` for the given task executor.
`AsyncAnnotationAdvisor(Supplier<Executor> executor, Supplier<org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler> exceptionHandler)`
Create a new `AsyncAnnotationAdvisor` for the given task executor.

## Method Summary

Modifier and Type
Method
Description
`protected org.aopalliance.aop.Advice`
`buildAdvice(Supplier<Executor> executor, Supplier<org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler> exceptionHandler)`
`protected org.springframework.aop.Pointcut`
`buildPointcut(Set<Class<? extends Annotation>> asyncAnnotationTypes)`
Calculate a pointcut for the given async annotation types, if any.
`org.aopalliance.aop.Advice`
`getAdvice()`
`org.springframework.aop.Pointcut`
`getPointcut()`
`void`
`setAsyncAnnotationType(Class<? extends Annotation> asyncAnnotationType)`
Set the 'async' annotation type.
`void`
`setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)`
Set the `BeanFactory` to be used when looking up executors by qualifier.

### Methods inherited from class org.springframework.aop.support.AbstractPointcutAdvisor

`equals, getOrder, hashCode, setOrder`

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

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

### Methods inherited from interface org.springframework.aop.Advisor

`isPerInstance`

## Constructor Details

### AsyncAnnotationAdvisor

public AsyncAnnotationAdvisor()
Create a new `AsyncAnnotationAdvisor` for bean-style configuration.

### AsyncAnnotationAdvisor

public AsyncAnnotationAdvisor(@Nullable Executor executor, @Nullable org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler exceptionHandler)
Create a new `AsyncAnnotationAdvisor` for the given task executor.

Parameters:
  `executor` - the task executor to use for asynchronous methods (can be `null` to trigger default executor resolution)
  `exceptionHandler` - the `AsyncUncaughtExceptionHandler` to use to handle unexpected exception thrown by asynchronous method executions
See Also:
  - `AsyncExecutionInterceptor.getDefaultExecutor(BeanFactory)`

### AsyncAnnotationAdvisor

public AsyncAnnotationAdvisor(@Nullable Supplier<Executor> executor, @Nullable Supplier<org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler> exceptionHandler)
Create a new `AsyncAnnotationAdvisor` for the given task executor.

Parameters:
  `executor` - the task executor to use for asynchronous methods (can be `null` to trigger default executor resolution)
  `exceptionHandler` - the `AsyncUncaughtExceptionHandler` to use to handle unexpected exception thrown by asynchronous method executions
Since:
  5.1
See Also:
  - `AsyncExecutionInterceptor.getDefaultExecutor(BeanFactory)`

## Method Details

### setAsyncAnnotationType

public void setAsyncAnnotationType(Class<? extends Annotation> asyncAnnotationType)
Set the 'async' annotation type.

The default async annotation type is the `Async` annotation, as well as the EJB 3.1 `jakarta.ejb.Asynchronous` annotation (if present).

This setter property exists so that developers can provide their own (non-Spring-specific) annotation type to indicate that a method is to be executed asynchronously.

Parameters:
  `asyncAnnotationType` - the desired annotation type

### setBeanFactory

public void setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)
Set the `BeanFactory` to be used when looking up executors by qualifier.

Specified by:
  `setBeanFactory` in interface `org.springframework.beans.factory.BeanFactoryAware`

### getAdvice

public org.aopalliance.aop.Advice getAdvice()

Specified by:
  `getAdvice` in interface `org.springframework.aop.Advisor`

### getPointcut

public org.springframework.aop.Pointcut getPointcut()

Specified by:
  `getPointcut` in interface `org.springframework.aop.PointcutAdvisor`

### buildAdvice

protected org.aopalliance.aop.Advice buildAdvice(@Nullable Supplier<Executor> executor, @Nullable Supplier<org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler> exceptionHandler)

### buildPointcut

protected org.springframework.aop.Pointcut buildPointcut(Set<Class<? extends Annotation>> asyncAnnotationTypes)
Calculate a pointcut for the given async annotation types, if any.

Parameters:
  `asyncAnnotationTypes` - the async annotation types to introspect
Returns:
  the applicable Pointcut object, or `null` if none