springmvc其实就是对servlet的一个封装,所以其初始化流程遵循servlet的生命周期。
springmvc是基于spring来进行扩展实现的,所以需要先对spring的容器进行初始化,在进行springmvc容器进行初始化,这就是父子容器。
首先初始化spring容器,扫描web.xml中listen标签,需要配置ContextLoaderListener类或其子类,tomcat启动时会扫描web.xml文件通过这个类的initWebApplicationContext方法进行初始化传入参数为ServletContext。
第一步:初始化spring容器
创建WebApplicationContext对象,调用configureAndRefreshWebApplicationContext方法传入参数为ConfigurableWebApplicationContext和ServletContext对象,随后设置开始时间等操作,设置servletContext对象,设置configLocation,此值为web.xml中配置的context-param中param-name为contextConfigeLocation属性的值param-value,设置下环境资源属性,最后调用refresh方法,此为spring初始化容器的核心方法其中共有13个方法,执行后spring容器就已经准备好了。
第二步:初始化springmvc容器
由于springmvc容器是基于servlet的所以需要找到init方法,web.xml中配置了springmvc的一个主要的类叫做DispatcherServlet,我们需要从此类入手,找到其父类HttpServletBean中的