ApplicationListener调用过程详解

本文详细介绍了Spring框架中ApplicationListener接口的应用及其实现原理。从ApplicationListener接口的定义出发,逐步深入到SimpleApplicationEventMulticaster组件的工作流程,直至整个事件发布与监听的过程。涵盖了从Web容器启动到事件发布的各个关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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配置这个监听器,启动容器时,就会默认执行它实现的方法



评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值