Class AbstractApplicationEventMulticaster
- All Implemented Interfaces:
 Aware,BeanClassLoaderAware,BeanFactoryAware,ApplicationEventMulticaster
- Direct Known Subclasses:
 SimpleApplicationEventMulticaster
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, Stephane Nicoll
 - See Also:
 
- 
Constructor Summary
Constructors - 
Method Summary
Modifier and TypeMethodDescriptionvoidaddApplicationListener(ApplicationListener<?> listener) Add a listener to be notified of all events.voidaddApplicationListenerBean(String listenerBeanName) Add a listener bean to be notified of all events.protected Collection<ApplicationListener<?>>Return a Collection containing all ApplicationListeners.protected Collection<ApplicationListener<?>>getApplicationListeners(ApplicationEvent event, ResolvableType eventType) Return a Collection of ApplicationListeners matching the given event type.voidRemove all listeners registered with this multicaster.voidremoveApplicationListener(ApplicationListener<?> listener) Remove a listener from the notification list.voidremoveApplicationListenerBean(String listenerBeanName) Remove a listener bean from the notification list.voidremoveApplicationListenerBeans(Predicate<String> predicate) Remove all matching listener beans from the set of registered listener bean names (referring to bean classes which in turn implement theApplicationListenerinterface directly).voidremoveApplicationListeners(Predicate<ApplicationListener<?>> predicate) Remove all matching listeners from the set of registeredApplicationListenerinstances (which includes adapter classes such asApplicationListenerMethodAdapter, e.g.voidsetBeanClassLoader(ClassLoader classLoader) Callback that supplies the beanclass loaderto a bean instance.voidsetBeanFactory(BeanFactory beanFactory) Callback that supplies the owning factory to a bean instance.protected booleansupportsEvent(Class<?> listenerType, ResolvableType eventType) Filter a listener early through checking its generically declared event type before trying to instantiate it.protected booleansupportsEvent(ApplicationListener<?> listener, ResolvableType 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, waitMethods inherited from interface org.springframework.context.event.ApplicationEventMulticaster
multicastEvent, multicastEvent 
- 
Constructor Details
- 
AbstractApplicationEventMulticaster
public AbstractApplicationEventMulticaster() 
 - 
 - 
Method Details
- 
setBeanClassLoader
Description copied from interface:BeanClassLoaderAwareCallback that supplies the beanclass loaderto a bean instance.Invoked after the population of normal bean properties but before an initialization callback such as
InitializingBean'sInitializingBean.afterPropertiesSet()method or a custom init-method.- Specified by:
 setBeanClassLoaderin interfaceBeanClassLoaderAware- Parameters:
 classLoader- the owning class loader
 - 
setBeanFactory
Description copied from interface:BeanFactoryAwareCallback 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:
 setBeanFactoryin interfaceBeanFactoryAware- Parameters:
 beanFactory- owning BeanFactory (nevernull). The bean can immediately call methods on the factory.- See Also:
 
 - 
addApplicationListener
Description copied from interface:ApplicationEventMulticasterAdd a listener to be notified of all events.- Specified by:
 addApplicationListenerin interfaceApplicationEventMulticaster- Parameters:
 listener- the listener to add- See Also:
 
 - 
addApplicationListenerBean
Description copied from interface:ApplicationEventMulticasterAdd a listener bean to be notified of all events.- Specified by:
 addApplicationListenerBeanin interfaceApplicationEventMulticaster- Parameters:
 listenerBeanName- the name of the listener bean to add- See Also:
 
 - 
removeApplicationListener
Description copied from interface:ApplicationEventMulticasterRemove a listener from the notification list.- Specified by:
 removeApplicationListenerin interfaceApplicationEventMulticaster- Parameters:
 listener- the listener to remove- See Also:
 
 - 
removeApplicationListenerBean
Description copied from interface:ApplicationEventMulticasterRemove a listener bean from the notification list.- Specified by:
 removeApplicationListenerBeanin interfaceApplicationEventMulticaster- Parameters:
 listenerBeanName- the name of the listener bean to remove- See Also:
 
 - 
removeApplicationListeners
Description copied from interface:ApplicationEventMulticasterRemove all matching listeners from the set of registeredApplicationListenerinstances (which includes adapter classes such asApplicationListenerMethodAdapter, e.g. for annotatedEventListenermethods).Note: This just applies to instance registrations, not to listeners registered by bean name.
- Specified by:
 removeApplicationListenersin interfaceApplicationEventMulticaster- Parameters:
 predicate- the predicate to identify listener instances to remove, e.g. checkingSmartApplicationListener.getListenerId()- See Also:
 
 - 
removeApplicationListenerBeans
Description copied from interface:ApplicationEventMulticasterRemove all matching listener beans from the set of registered listener bean names (referring to bean classes which in turn implement theApplicationListenerinterface directly).Note: This just applies to bean name registrations, not to programmatically registered
ApplicationListenerinstances.- Specified by:
 removeApplicationListenerBeansin interfaceApplicationEventMulticaster- Parameters:
 predicate- the predicate to identify listener bean names to remove- See Also:
 
 - 
removeAllListeners
public void removeAllListeners()Description copied from interface:ApplicationEventMulticasterRemove all listeners registered with this multicaster.After a remove call, the multicaster will perform no action on event notification until new listeners are registered.
- Specified by:
 removeAllListenersin interfaceApplicationEventMulticaster- See Also:
 
 - 
getApplicationListeners
Return a Collection containing all ApplicationListeners.- Returns:
 - a Collection of ApplicationListeners
 - See Also:
 
 - 
getApplicationListeners
protected Collection<ApplicationListener<?>> getApplicationListeners(ApplicationEvent event, ResolvableType eventType) 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.eventType- the event type- Returns:
 - a Collection of ApplicationListeners
 - See Also:
 
 - 
supportsEvent
Filter a listener early through checking its generically declared event type before trying to instantiate it.If this method returns
truefor a given listener as a first pass, the listener instance will get retrieved and fully evaluated through asupportsEvent(ApplicationListener, ResolvableType, Class)call afterwards.- Parameters:
 listenerType- the listener's type as determined by the BeanFactoryeventType- the event type to check- Returns:
 - whether the given listener should be included in the candidates for the given event type
 
 - 
supportsEvent
protected boolean supportsEvent(ApplicationListener<?> listener, ResolvableType eventType, @Nullable Class<?> sourceType) Determine whether the given listener supports the given event.The default implementation detects the
SmartApplicationListenerandGenericApplicationListenerinterfaces. In case of a standardApplicationListener, aGenericApplicationListenerAdapterwill be used to introspect the generically declared type of the target listener.- Parameters:
 listener- the target listener to checkeventType- the event type to check againstsourceType- the source type to check against- Returns:
 - whether the given listener should be included in the candidates for the given event type
 
 
 -