问题:
Spring Boot 默认支持异步事件吗?
在spring和Spring boot 中,SimpleApplicationEventMulticaster
是ApplicationEventMulticaster
的唯一实现,除了提供发布事件功能,其集成的抽象类AbstractApplicationEventMulticaster还提供了增加移除监听器的功能。同时,SimpleApplicationEventMulticaster
还提供了同步执行和异步执行两种方式。SimpleApplicationEventMulticaster
部分代码如下:
public class SimpleApplicationEventMulticaster extends AbstractApplicationEventMulticaster {
@Nullable
private Executor taskExecutor;
。。。。。。。。。
@Override
public void multicastEvent(ApplicationEvent event) {
multicastEvent(event, resolveDefaultEventType(event));
}
@Override
public void multicastEvent(final ApplicationEvent event, @Nullable ResolvableType eventType) {
ResolvableType type = (eventType != null ? eventType : resolveDefaultEventType(event));
Executor executor = getTaskExecutor();
for (ApplicationListener<?> listener : getApplicationListeners(event, type)) {
if (executor != null) {
executor.execute(() -> invokeListener(listener, event));
}
else {
invokeListener(listener, event);
}
}
}
。。。。。。。。。。。。。
}
那么,SimpleApplicationEventMulticaster
是在什么地方加载的?在Spring和SpringBoot中是否是同一个实例呢?