Spring源码情操陶冶-AbstractApplicationContext#initApplicationEventMulticaster

承接前文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

posted @ 2017-05-11 20:17  南柯问天  阅读(1081)  评论(0编辑  收藏  举报