初学Spring源码3.8:initApplicationEventMulticaster()

该方法主要负责初始化Spring应用事件广播器。如果BeanFactory中存在名为'applicationEventMulticaster'的bean,则使用该bean;否则,创建一个SimpleApplicationEventMulticaster实例并注册为单例bean。这确保了事件系统的正确设置和运行。
摘要由CSDN通过智能技术生成

initApplicationEventMulticaster()

/**
 * 初始化应用事件广播组,如果没有默认定义则使用SimpleApplicationEventMulticaster
 * Initialize the ApplicationEventMulticaster.
 * Uses SimpleApplicationEventMulticaster if none defined in the context.
 * @see org.springframework.context.event.SimpleApplicationEventMulticaster
 */
protected void initApplicationEventMulticaster() {
   ConfigurableListableBeanFactory beanFactory = getBeanFactory();
   // 如果BeanFactory含有applicationEventMulticaster类型的bean,
   // 则实例化一个ApplicationEventMulticaster作为上下文的成员变量
   if (beanFactory.containsLocalBean(APPLICATION_EVENT_MULTICASTER_BEAN_NAME)) {
      this.applicationEventMulticaster =
            beanFactory.getBean(APPLICATION_EVENT_MULTICASTER_BEAN_NAME, ApplicationEventMulticaster.class);
      if (logger.isTraceEnabled()) {
         logger.trace("Using ApplicationEventMulticaster [" + this.applicationEventMulticaster + "]");
      }
   }
   // 如果BeanFactory不含有applicationEventMulticaster类型的bean,
   // 则实例化一个SimpleApplicationEventMulticaster作为上下文的成员变量
   else {
      this.applicationEventMulticaster = new SimpleApplicationEventMulticaster(beanFactory);
      beanFactory.registerSingleton(APPLICATION_EVENT_MULTICASTER_BEAN_NAME, this.applicationEventMulticaster);
      if (logger.isTraceEnabled()) {
         logger.trace("No '" + APPLICATION_EVENT_MULTICASTER_BEAN_NAME + "' bean, using " +
               "[" + this.applicationEventMulticaster.getClass().getSimpleName() + "]");
      }
   }
}

spring中有事件,事件广播器,事件监听器等组成事件体系,在initApplicationEventMulticaster方法中对事件广播器做初始化,如果找不到此Bean的配置,则创建一个SimpleApplicationEventMulticaster实例作为事件广播器的bean,并且保存为applicationContext的成员变量.

同样会以"applicationEventMulticaster"为key,以SimpleApplicationEventMulticaster实例为value保存在DefauliSingletonBeanRegistry的 singletonObjects 这个map中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值