spring的事件监听机制这里就不再赘述了,不清楚的可以自行google,我们知道,事件发布是依靠调用实现了ApplicationEventPublisher接口类的publishEvent方法进行发布事件,而publishEvent 方法又是通过调用实现了ApplicationEventMulticaster接口的类的multicastEvent方法进行事件的广播的,ApplicationEventMulticaster中保存了所有的实现了ApplicationListener接口的监听器,我们看一下spring内部实现ApplicationEventMulticaster接口的一个广播器SimpleApplicationEventMulticaster的源码
public class SimpleApplicationEventMulticaster extendsAbstractApplicationEventMulticaster {privateExecutor taskExecutor;publicSimpleApplicationEventMulticaster() {
}publicSimpleApplicationEventMulticaster(BeanFactory beanFactory) {this.setBeanFactory(beanFactory);
}public voidsetTaskExecutor(Executor taskExecutor) {this.taskExecutor =taskExecutor;
}protectedExecutor getTaskExecutor() {return this.taskExecutor;
}public void multicastEvent(finalApplicationEvent event) {
Iterator i$= this.getApplicationList