3ContextLoaderListener做了哪些事

Posted lay2017

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3ContextLoaderListener做了哪些事相关的知识,希望对你有一定的参考价值。

职责

spring通过监听ServletContext的初始化来创建父容器,ContextLoaderListener是实现了ServletContextListener接口的实现类,UML如图所示:

技术图片

UML中我们看到ContextLoaderListener不仅实现了ServletContextListener,还继承了ContextLoader。这意味着ContextLoaderListener包含了两种职责:

1)监听ServletContext初始化;

2)配置加载spring容器;

监听ServletContext初始化

通常情况下ContextLoaderListener将被配置在web.xml中或者通过SPI机制添加到ServletContext中,在ServletContext初始化的时候将会触发该监听器,回调contextInitialized(ServletContextEvent event)方法。

技术图片

ContextLoaderListener在触发回调方法以后就直接初始化spring的容器,调用initWebApplicationContext方法。

配置加载spring容器

进入initWebApplicationContext方法

技术图片

该方法主要做了两件事

1)createWebApplicationContext创建WebApplicationContext的实例对象

2)configureAndRefreshWebApplicationContext配置并刷新context

createWebApplicationContext

 该方法选择WebApplicationContext的实现类,并反射创建实例对象,选择方法如下

技术图片

我们看到,它首先从servletContext中获取配置的contextClass,如果没有配置那么降级从默认策略里面拿contextClass,默认是XmlWebApplicationContext。

configureAndRefreshWebApplicationContext

该方法也做了两件事

1)配置WebApplicationContext

  1-1)配置context的唯一ID

  1-2)获取并配置contextConfigLocation

  1-3)将ServletContext中的键值配置加入到Environment中

  1-4)处理自定义配置接口ApplicationContextInitializer的实现类

2)refresh

  构造完毕WebApplicationContext,并且配置完成以后将调用context的refresh方法,该方法是创建spring容器的核心方法。

技术图片

总结

总得来说ContextLoaderListener作为spring父容器的起始点,创建并配置spring父容器从这里开始。

 

以上是关于3ContextLoaderListener做了哪些事的主要内容,如果未能解决你的问题,请参考以下文章

Discord.NET - 获取命令中抛出了哪种类型的异常

lesson_013 笔记

Linux安装curl的过程,配置,安装软连接都成功了,不知道是改了哪,输入任何curl命令毫无反应。

双击 ListView 的一行时选择了哪一列

确定在richtextbox中点击了哪一行

如何知道用户在 SwiftUI 中的日期选择器中触摸了哪一天