首页 > 编程语言 > 详细

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

时间:2014-10-01 10:53:51      阅读:282      评论:0      收藏:0      [点我收藏+]

先看看DispatcherServlet的类机构:

bubuko.com,布布扣

始化时序图

bubuko.com,布布扣

 

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

bubuko.com,布布扣

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

bubuko.com,布布扣

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

bubuko.com,布布扣

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

bubuko.com,布布扣

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

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

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

 

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

原文:http://www.cnblogs.com/dongying/p/4003099.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!