ApplicationListener调用过程详解

https://blog.csdn.net/u014263388/article/details/78996509

ApplicationListener调用过程详解

2018年01月07日 19:07:40

阅读数:4490

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

 

猜你喜欢

转载自blog.csdn.net/u013452335/article/details/81632328