ApplicationListener调用过程详解

ApplicationListener调用过程详解:
实现接口ApplicationListener,并重写public void onApplicationEvent(ApplicationEvent event) {}可以在容器初始话的时候执行这个方法 ,其中源码为:


具体的源码过程如下:
1、SimpleApplicationEventMulticaster,执行multicastEvent,先获取ApplicationListener集合,然后循环遍历执行ApplicationListener的onApplicationEvent()方法


2、SimpleApplicationEventMulticaster继承自:AbstractApplicationEventMulticaster,AbstractApplicationEventMulticaster里面的成员:

其中获取ApplicationListener的方法为:




3、而调用SimpleApplicationEventMulticaster的方法则为:AbstractApplicationContext的方法:public void publishEvent(ApplicationEvent event)

其中AbstractApplicationContext实现了接口ConfigurableApplicationContext:


4、public void publishEvent(ApplicationEvent event)被AbstractApplicationContext的方法:protected void finishRefresh()调用


5、protected void finishRefresh()则被AbstractApplicationContext的public void refresh()方法调用:


6、AbstractApplicationContext的public void refresh()被ContextLoader的protected WebApplicationContext createWebApplicationContext(ServletContext sc, ApplicationContext parent)调用:


7、ContextLoader的createWebApplicationContext(ServletContext sc, ApplicationContext parent)方法被ContextLoader的public WebApplicationContext initWebApplicationContext(ServletContext servletContext)方法调用:


8、initWebApplicationContext(ServletContext servletContext)方法被ContextLoaderListener的public void contextInitialized(ServletContextEvent event)方法调用:



在启动Web容器时,自动装配Spring applicationContext.xml的配置信息
ContextLoaderListener监听器的作用就是启动Web容器时,自动装配ApplicationContext的配置信息。因为它实现了ServletContextListener这个接口, 在web.xml配置这个监听器, 启动容器时,就会默认执行它实现的方法



  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值