/*
 * Copyright 2002-2019 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.context.event;

import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.core.ResolvableType;
import org.springframework.lang.Nullable;

Interface to be implemented by objects that can manage a number of ApplicationListener objects and publish events to them.

An ApplicationEventPublisher, typically a Spring ApplicationContext, can use an ApplicationEventMulticaster as a delegate for actually publishing events.

Author:Rod Johnson, Juergen Hoeller, Stephane Nicoll
See Also:
/** * Interface to be implemented by objects that can manage a number of * {@link ApplicationListener} objects and publish events to them. * * <p>An {@link org.springframework.context.ApplicationEventPublisher}, typically * a Spring {@link org.springframework.context.ApplicationContext}, can use an * {@code ApplicationEventMulticaster} as a delegate for actually publishing events. * * @author Rod Johnson * @author Juergen Hoeller * @author Stephane Nicoll * @see ApplicationListener */
public interface ApplicationEventMulticaster {
Add a listener to be notified of all events.
Params:
  • listener – the listener to add
/** * Add a listener to be notified of all events. * @param listener the listener to add */
void addApplicationListener(ApplicationListener<?> listener);
Add a listener bean to be notified of all events.
Params:
  • listenerBeanName – the name of the listener bean to add
/** * Add a listener bean to be notified of all events. * @param listenerBeanName the name of the listener bean to add */
void addApplicationListenerBean(String listenerBeanName);
Remove a listener from the notification list.
Params:
  • listener – the listener to remove
/** * Remove a listener from the notification list. * @param listener the listener to remove */
void removeApplicationListener(ApplicationListener<?> listener);
Remove a listener bean from the notification list.
Params:
  • listenerBeanName – the name of the listener bean to remove
/** * Remove a listener bean from the notification list. * @param listenerBeanName the name of the listener bean to remove */
void removeApplicationListenerBean(String listenerBeanName);
Remove all listeners registered with this multicaster.

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

/** * Remove all listeners registered with this multicaster. * <p>After a remove call, the multicaster will perform no action * on event notification until new listeners are registered. */
void removeAllListeners();
Multicast the given application event to appropriate listeners.

Consider using multicastEvent(ApplicationEvent, ResolvableType) if possible as it provides better support for generics-based events.

Params:
  • event – the event to multicast
/** * Multicast the given application event to appropriate listeners. * <p>Consider using {@link #multicastEvent(ApplicationEvent, ResolvableType)} * if possible as it provides better support for generics-based events. * @param event the event to multicast */
void multicastEvent(ApplicationEvent event);
Multicast the given application event to appropriate listeners.

If the eventType is null, a default type is built based on the event instance.

Params:
  • event – the event to multicast
  • eventType – the type of event (can be null)
Since:4.2
/** * Multicast the given application event to appropriate listeners. * <p>If the {@code eventType} is {@code null}, a default type is built * based on the {@code event} instance. * @param event the event to multicast * @param eventType the type of event (can be {@code null}) * @since 4.2 */
void multicastEvent(ApplicationEvent event, @Nullable ResolvableType eventType); }