承接前文Spring源码情操陶冶-AbstractApplicationContext#initMessageSource
约定web.xml配置的contextClass为默认值XmlWebApplicationContext

瞧瞧官方注释

	/**
	 * Initialize the ApplicationEventMulticaster.
	 * Uses SimpleApplicationEventMulticaster if none defined in the context.
	 * @see org.springframework.context.event.SimpleApplicationEventMulticaster
	 */

初始化ApplicationEventMulticaster事件,默认使用SimpleApplicationEventMulticaster事件

直接源码

protected void initApplicationEventMulticaster() {
		ConfigurableListableBeanFactory beanFactory = getBeanFactory();
		//查找是否存在id为applicationEventMulticaster的bean对象
		if (beanFactory.containsLocalBean(APPLICATION_EVENT_MULTICASTER_BEAN_NAME)) {
			this.applicationEventMulticaster =
					beanFactory.getBean(APPLICATION_EVENT_MULTICASTER_BEAN_NAME, ApplicationEventMulticaster.class);
			if (logger.isDebugEnabled()) {
				logger.debug("Using ApplicationEventMulticaster [" + this.applicationEventMulticaster + "]");
			}
		}
		else {
			//默认使用SimpleApplicationEventMulticaster,并注册为单例
			this.applicationEventMulticaster = new SimpleApplicationEventMulticaster(beanFactory);
			beanFactory.registerSingleton(APPLICATION_EVENT_MULTICASTER_BEAN_NAME, this.applicationEventMulticaster);
			if (logger.isDebugEnabled()) {
				logger.debug("Unable to locate ApplicationEventMulticaster with name '" +
						APPLICATION_EVENT_MULTICASTER_BEAN_NAME +
						"': using default [" + this.applicationEventMulticaster + "]");
			}
		}
	}

小结

此节内容跟前文initMessageSource类似

下节预告

Spring源码情操陶冶-AbstractApplicationContext#onRefresh

相关文章:

  • 2021-06-11
  • 2021-11-18
  • 2021-10-11
  • 2021-05-20
  • 2021-09-28
  • 2021-07-27
  • 2021-08-26
  • 2021-12-05
猜你喜欢
  • 2021-11-13
  • 2021-05-19
  • 2021-12-24
  • 2022-01-11
  • 2021-05-28
  • 2021-09-12
  • 2021-07-02
相关资源
相似解决方案