Spring 中观察者模式的运用举例
观察者模式在 Spring 事件中的应用:简单应用事件广播器 SimpleApplicationEventMulticaster。
@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);
}
}
}
multicastEvent 方法:
-
确定事件类型
-
获取到该事件的监听器
-
通过线程池的方式新启动一个线程进行事件的处理
如上所述,这就是 Spring 通过事件的方式让监听器进行状态的回调或事件的处理的一个简单实现。