springMVC 源码解读系列(一)初始化

王朝学院·作者佚名  2016-05-29
窄屏简体版  字體: 小  |  中  |  大  |  超大  

sPRingMVC 源码解读系列(一)初始化先看看DispatcherServlet的类机构:

初始化时序图:

servlet初始化会调用 init 方法,换句话说就是springMVC进行初始化的时候首先会去执行HttpServletBean的init方法, 下面看看HttpServletBean的源码:

上面这段代码主要是在获取你在web.xml中配置在<init-param>中的属性(例如:namespace,contextConfigLocation)。 其中有一点值得注意,那就是initServletBean() 这个方法是由其子类 FrameworkServlet 实现,因此, 接下来 FramworkServlet 会执行 initServletBean 这个方法,下面就继续看看 initServletBean 方法源码:

可以看到initServletBean 方法中就调用了一个 initFrameworkServlet 方法和initWebapplicationContext 方法,其中initFrameworkServlet方法是由子类实现,这个不多说,直接看initWebApplicationContext 方法源码:

代码注释部分已给出解析, 此处不再分析, 上面代码调用了一次createWebApplicationContext方法, 下面就看看这个方法的源码:

以上就是创建webApplicationContext的代码,注释已给出。

还记得FrameworkServlet初始化的时候会调用onRefresh()方法吗,这个方法是留给其子类DispatcherServlet调用的, 最后就该看看DispatcherServlet里面的 onRefresh 方法了:

可以看到onRefresh方法就一句话,调用initStrategies方法, 上面给出了 initStrategies 源码, 很直观,就是在初始化springMVC 的一系列组件, 但是此处你要明白,SpringMVC的组件其实已经在webApplicationContext创建时就已经实例化了, 此处所谓的初始化只是在选择合适的组件(每一个组件都对应了几个不同的实现)。OK, 至此, springMVC 的初始化完成!

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航