在配置SpringMVC的时候,我们会在xml文件中配置load-on-startup标签
SpringMVC的作用就是简化Web服务器处理客户端请求的代码操作,代替我们完成创建众多servlet、通过getParameter获取数据等一系列操作。
下面我们来分析源代码中,如何实现这一系列初始化。
1、寻找init()方法
链接spring-web-4.3.10.RELEASE-sources.jar后打开org.springframework.web.servlet.DispatcherServlet类
寻找init()方法,发现init方法并未在DispatcherServlet类和它的父类FrameworkServlet中,而是在FrameworkServlet类的父类HttpServletBean类中,被final修饰不可被继承。
2、初始化Servlet对象并将其加入到容器中
注意initServletBean()方法,同时存在于FrameworkServlet和HttpServletBean中,但根据继承规则,子类会调用“距离自己最近”的父类中的方法,因此此处调用FrameworkServlet类中的initServletBean()方法。
3、执行initWebApplicationContext()方法创建Spring容器
执行FrameworkServlet类中的initWebApplicationContext()方法,
4、执行onRefresh()方法
执行类中的onRefresh()方法,最终完成初始化。