org.springframework.context.event

## Class AbstractApplicationEventMulticaster

- java.lang.Object
- - org.springframework.context.event.AbstractApplicationEventMulticaster

- All Implemented Interfaces:
    Aware, BeanFactoryAware, ApplicationEventMulticaster
  Direct Known Subclasses:
    SimpleApplicationEventMulticaster

      public abstract class AbstractApplicationEventMulticaster
      extends Object
      implements ApplicationEventMulticaster, BeanFactoryAware

  Abstract implementation of the `ApplicationEventMulticaster` interface, providing the basic listener registration facility.

  Doesn't permit multiple instances of the same listener by default, as it keeps listeners in a linked Set. The collection class used to hold ApplicationListener objects can be overridden through the "collectionClass" bean property.

  Implementing ApplicationEventMulticaster's actual `ApplicationEventMulticaster.multicastEvent(org.springframework.context.ApplicationEvent)` method is left to subclasses. `SimpleApplicationEventMulticaster` simply multicasts all events to all registered listeners, invoking them in the calling thread. Alternative implementations could be more sophisticated in those respects.

  Since:
    1.2.3
  Author:
    Juergen Hoeller
  See Also:
    `getApplicationListeners(ApplicationEvent)`, `SimpleApplicationEventMulticaster`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractApplicationEventMulticaster()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addApplicationListener(ApplicationListener listener)` Add a listener to be notified of all events.
    `void` | `addApplicationListenerBean(String listenerBeanName)` Add a listener bean to be notified of all events.
    `protected Collection<ApplicationListener>` | `getApplicationListeners()` Return a Collection containing all ApplicationListeners.
    `protected Collection<ApplicationListener>` | `getApplicationListeners(ApplicationEvent event)` Return a Collection of ApplicationListeners matching the given event type.
    `void` | `removeAllListeners()` Remove all listeners registered with this multicaster.
    `void` | `removeApplicationListener(ApplicationListener listener)` Remove a listener from the notification list.
    `void` | `removeApplicationListenerBean(String listenerBeanName)` Remove a listener bean from the notification list.
    `void` | `setBeanFactory(BeanFactory beanFactory)` Callback that supplies the owning factory to a bean instance.
    `protected boolean` | `supportsEvent(ApplicationListener listener, Class<? extends ApplicationEvent> eventType, Class sourceType)` Determine whether the given listener supports the given event.

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

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

    - ### Methods inherited from interface org.springframework.context.event.ApplicationEventMulticaster

      `multicastEvent`

- - ### Constructor Detail

    - #### AbstractApplicationEventMulticaster

          public AbstractApplicationEventMulticaster()

  - ### Method Detail

    - #### addApplicationListener

          public void addApplicationListener(ApplicationListener listener)

      Description copied from interface: `ApplicationEventMulticaster`
      Add a listener to be notified of all events.
      Specified by:
        `addApplicationListener` in interface `ApplicationEventMulticaster`
      Parameters:
        `listener` - the listener to add

    - #### addApplicationListenerBean

          public void addApplicationListenerBean(String listenerBeanName)

      Description copied from interface: `ApplicationEventMulticaster`
      Add a listener bean to be notified of all events.
      Specified by:
        `addApplicationListenerBean` in interface `ApplicationEventMulticaster`
      Parameters:
        `listenerBeanName` - the name of the listener bean to add

    - #### removeApplicationListener

          public void removeApplicationListener(ApplicationListener listener)

      Description copied from interface: `ApplicationEventMulticaster`
      Remove a listener from the notification list.
      Specified by:
        `removeApplicationListener` in interface `ApplicationEventMulticaster`
      Parameters:
        `listener` - the listener to remove

    - #### removeApplicationListenerBean

          public void removeApplicationListenerBean(String listenerBeanName)

      Description copied from interface: `ApplicationEventMulticaster`
      Remove a listener bean from the notification list.
      Specified by:
        `removeApplicationListenerBean` in interface `ApplicationEventMulticaster`
      Parameters:
        `listenerBeanName` - the name of the listener bean to add

    - #### removeAllListeners

          public void removeAllListeners()

      Description copied from interface: `ApplicationEventMulticaster`
      Remove all listeners registered with this multicaster.

      After a remove call, the multicaster will perform no action on event notification until new listeners are being registered.

      Specified by:
        `removeAllListeners` in interface `ApplicationEventMulticaster`

    - #### setBeanFactory

          public final void setBeanFactory(BeanFactory beanFactory)

      Description copied from interface: `BeanFactoryAware`
      Callback that supplies the owning factory to a bean instance.

      Invoked after the population of normal bean properties but before an initialization callback such as `InitializingBean.afterPropertiesSet()` or a custom init-method.

      Specified by:
        `setBeanFactory` in interface `BeanFactoryAware`
      Parameters:
        `beanFactory` - owning BeanFactory (never `null`). The bean can immediately call methods on the factory.
      See Also:
        `BeanInitializationException`

    - #### getApplicationListeners

          protected Collection<ApplicationListener> getApplicationListeners()

      Return a Collection containing all ApplicationListeners.
      Returns:
        a Collection of ApplicationListeners
      See Also:
        `ApplicationListener`

    - #### getApplicationListeners

          protected Collection<ApplicationListener> getApplicationListeners(ApplicationEvent event)

      Return a Collection of ApplicationListeners matching the given event type. Non-matching listeners get excluded early.
      Parameters:
        `event` - the event to be propagated. Allows for excluding non-matching listeners early, based on cached matching information.
      Returns:
        a Collection of ApplicationListeners
      See Also:
        `ApplicationListener`

    - #### supportsEvent

          protected boolean supportsEvent(ApplicationListener listener,
                              Class<? extends ApplicationEvent> eventType,
                              Class sourceType)

      Determine whether the given listener supports the given event.

      The default implementation detects the `SmartApplicationListener` interface. In case of a standard `ApplicationListener`, a `GenericApplicationListenerAdapter` will be used to introspect the generically declared type of the target listener.

      Parameters:
        `listener` - the target listener to check
        `eventType` - the event type to check against
        `sourceType` - the source type to check against
      Returns:
        whether the given listener should be included in the candidates for the given event type