类 SimpleApplicationEventMulticaster
ApplicationEventMulticaster interface.
Multicasts all events to all registered listeners, leaving it up to
the listeners to ignore events that they are not interested in.
Listeners will usually perform corresponding instanceof
checks on the passed-in event object.
By default, all listeners are invoked in the calling thread. This allows the danger of a rogue listener blocking the entire application, but adds minimal overhead. Specify an alternative task executor to have listeners executed in different threads, for example from a thread pool.
- 作者:
- Rod Johnson, Juergen Hoeller, Stephane Nicoll, Brian Clozel
- 另请参阅:
-
构造器概要
构造器构造器说明Create a new SimpleApplicationEventMulticaster.SimpleApplicationEventMulticaster(BeanFactory beanFactory) Create a new SimpleApplicationEventMulticaster for the given BeanFactory. -
方法概要
修饰符和类型方法说明protected cn.taketoday.util.ErrorHandlerReturn the current error handler for this multicaster.protected ExecutorReturn the current task executor for this multicaster.protected voidinvokeListener(ApplicationListener<?> listener, ApplicationEvent event) Invoke the given listener with the given event.voidmulticastEvent(ApplicationEvent event) Multicast the given application event to appropriate listeners.voidmulticastEvent(ApplicationEvent event, cn.taketoday.core.ResolvableType eventType) Multicast the given application event to appropriate listeners.voidsetErrorHandler(cn.taketoday.util.ErrorHandler errorHandler) Set theErrorHandlerto invoke in case an exception is thrown from a listener.voidsetTaskExecutor(Executor taskExecutor) Set a custom executor (typically aTaskExecutor) to invoke each listener with.从类继承的方法 cn.taketoday.context.event.AbstractApplicationEventMulticaster
addApplicationListener, addApplicationListenerBean, getApplicationListeners, getApplicationListeners, removeAllListeners, removeApplicationListener, removeApplicationListenerBean, removeApplicationListenerBeans, removeApplicationListeners, setBeanClassLoader, setBeanFactory, supportsEvent, supportsEvent
-
构造器详细资料
-
SimpleApplicationEventMulticaster
public SimpleApplicationEventMulticaster()Create a new SimpleApplicationEventMulticaster. -
SimpleApplicationEventMulticaster
Create a new SimpleApplicationEventMulticaster for the given BeanFactory.
-
-
方法详细资料
-
setTaskExecutor
Set a custom executor (typically aTaskExecutor) to invoke each listener with.Default is equivalent to
SyncTaskExecutor, executing all listeners synchronously in the calling thread.Consider specifying an asynchronous task executor here to not block the caller until all listeners have been executed. However, note that asynchronous execution will not participate in the caller's thread context (class loader, transaction association) unless the TaskExecutor explicitly supports this.
- 另请参阅:
-
SyncTaskExecutorSimpleAsyncTaskExecutor
-
getTaskExecutor
Return the current task executor for this multicaster. -
setErrorHandler
public void setErrorHandler(@Nullable cn.taketoday.util.ErrorHandler errorHandler) Set theErrorHandlerto invoke in case an exception is thrown from a listener.Default is none, with a listener exception stopping the current multicast and getting propagated to the publisher of the current event. If a task executor is specified, each individual listener exception will get propagated to the executor but won't necessarily stop execution of other listeners.
Consider setting an
ErrorHandlerimplementation that catches and logs exceptions (TaskUtils.LOG_AND_SUPPRESS_ERROR_HANDLER) or an implementation that logs exceptions while nevertheless propagating them (e.g.TaskUtils.LOG_AND_PROPAGATE_ERROR_HANDLER). -
getErrorHandler
@Nullable protected cn.taketoday.util.ErrorHandler getErrorHandler()Return the current error handler for this multicaster. -
multicastEvent
从接口复制的说明:ApplicationEventMulticasterMulticast the given application event to appropriate listeners.Consider using
ApplicationEventMulticaster.multicastEvent(ApplicationEvent, ResolvableType)if possible as it provides better support for generics-based events.- 参数:
event- the event to multicast
-
multicastEvent
public void multicastEvent(ApplicationEvent event, @Nullable cn.taketoday.core.ResolvableType eventType) 从接口复制的说明:ApplicationEventMulticasterMulticast the given application event to appropriate listeners.If the
eventTypeisnull, a default type is built based on theeventinstance.- 参数:
event- the event to multicasteventType- the type of event (can benull)
-
invokeListener
Invoke the given listener with the given event.- 参数:
listener- the ApplicationListener to invokeevent- the current event to propagate
-