Package org.springframework.context

# Interface ApplicationListener<E extends ApplicationEvent>

Type Parameters:
  `E` - the specific `ApplicationEvent` subclass to listen to

All Superinterfaces:
  `EventListener`

All Known Subinterfaces:
  `GenericApplicationListener`, `SmartApplicationListener`

All Known Implementing Classes:
  `ApplicationListenerMethodAdapter`, `ExecutorConfigurationSupport`, `GenericApplicationListenerAdapter`, `ScheduledAnnotationBeanPostProcessor`, `ScheduledExecutorFactoryBean`, `SimpleAsyncTaskScheduler`, `SourceFilteringListener`, `ThreadPoolExecutorFactoryBean`, `ThreadPoolTaskExecutor`, `ThreadPoolTaskScheduler`

Functional Interface:
  This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

@FunctionalInterface public interface ApplicationListener<E extends ApplicationEvent> extends EventListener
Interface to be implemented by application event listeners.

Based on the standard `EventListener` interface for the Observer design pattern.

An `ApplicationListener` can generically declare the event type that it is interested in. When registered with a Spring `ApplicationContext`, events will be filtered accordingly, with the listener getting invoked for matching event objects only.

Author:
  Rod Johnson, Juergen Hoeller
See Also:
  - `ApplicationEvent`
  - `ApplicationEventMulticaster`
  - `SmartApplicationListener`
  - `GenericApplicationListener`
  - `EventListener`

## Method Summary

Modifier and Type
Method
Description
`static <T> ApplicationListener<PayloadApplicationEvent<T>>`
`forPayload(Consumer<T> consumer)`
Create a new `ApplicationListener` for the given payload consumer.
`void`
`onApplicationEvent(E event)`
Handle an application event.
`default boolean`
`supportsAsyncExecution()`
Return whether this listener supports asynchronous execution.

## Method Details

### onApplicationEvent

void onApplicationEvent(E event)
Handle an application event.

Parameters:
  `event` - the event to respond to

### supportsAsyncExecution

default boolean supportsAsyncExecution()
Return whether this listener supports asynchronous execution.

Returns:
  `true` if this listener instance can be executed asynchronously depending on the multicaster configuration (the default), or `false` if it needs to immediately run within the original thread which published the event
Since:
  6.1
See Also:
  - `SimpleApplicationEventMulticaster.setTaskExecutor(java.util.concurrent.Executor)`

### forPayload

static <T> ApplicationListener<PayloadApplicationEvent<T>> forPayload(Consumer<T> consumer)
Create a new `ApplicationListener` for the given payload consumer.

Type Parameters:
  `T` - the type of the event payload
Parameters:
  `consumer` - the event payload consumer
Returns:
  a corresponding `ApplicationListener` instance
Since:
  5.3
See Also:
  - `PayloadApplicationEvent`