SpringMVC初始化时序图

 

SpringMVC初始化时序图

那么启动后什么时候容器可以接收到你的http请求呢?

首先,HttpServlet的init方法是获取Servlet中的init参数,并创建一个BeanWrapper对象。但是我们从源码得知,FrameworkServlet和DispatcherServlet都没有覆盖到initBeanWrapper(bw)方法,所以创建BeanWrapper对象是没有任何作用的,Spring容器也不是通过BeanWrapper来创建的。

其次,我们知道容器创建是在FrameworkServlet的initServletBean方法中完成的,同时这个方法会创建WebApplicationContex对象,并调用refresh()方法来完成配置文件的加载,配置文件的加载同样是查找Servlet的init-param参数中设置的路径,如果没有,会根据namespace+Servlet的名称来查找XML文件。

SpringMVC初始化时序图

最后,容器加载时会调用DispatcherServlet的initStrategies方法来完成在DispatcherServlet中定义的初始化工作。这个时候,我们就可以在客户端输入请求,容器就可以接受请求了。