## 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
`AbstractApplicationEventMulticaster()`

Method Summary
`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