黄沙百战穿金甲,不破楼兰终不还。这篇文章主要讲述一SpringMVC源码之DispatcherServletAbstractHanderMapping相关的知识,希望能为你提供帮助。
一:DipatcherServlet的初始化过程:【一SpringMVC源码之DispatcherServletAbstractHanderMapping】
我们可以先看一下dispatcherServlet的继承关系:
文章图片
dispatcherServlet的初始化是从HttpServletBean中的init()方法开始,此方法是一个final类型的方法
文章图片
可以看到,在HttpServletBean的init中,首先将Servlet中配置的参数使用BeanWrapper设置到DispatcherServlet的相关属性,然后调用模板方法initServletBean,子类就通过这个方法初始化。代码中,我们可能会有疑惑:BeanWrapper是干什么用的,其实BeanWrapper是Spring提供地一个用来操作javaBean属性的工具,可以使用它来修改一个对象的属性。
文章图片
这个例子首先建立了一个User对象,再使用PropertyAccessorFactory封装成Bean-Wrapper对象,这样就可以使用BeanWrapper对象对其属性userName进行操作。
< servlet> < servlet-name> dispatcher< /servlet-name> < servlet-class> org.springframework.web.servlet.DispatcherServlet< /servlet-class> < load-on-startup> 1< /load-on-startup> < init-param> < param-name> contextConfigLocation< /param-name> < param-value> classpath:springConfig/dispatcher-servlet.xml< /param-value> < /init-param> < /servlet> < servlet-mapping> < servlet-name> dispatcher< /servlet-name> < url-pattern> /< /url-pattern> < /servlet-mapping>
比如说上面这段web.xml中的代码,其中的contextConfigLocation属性,这个属性在FrameworkServlet中定义,但在httpServletBean中没有定义。此时BeanWrapper就派上用场了,构造BeanWrapper对象,利用Spring注入的特性,调用setPropertyValues方法就可将contextConfigLocation属性设置到对应实例中。(contextConfigLocation属性可以用于构造SpringMVC的上下文)
下面来说说FrameworkServlet类,此类实现了initServletBean()方法
文章图片
推荐阅读
- android -------- 混淆打包报错(warning - InnerClass annotations are missing corresponding EnclosingMember a
- BroadcastReceiver(广播)的静态注册和动态注册 --Android开发
- ubuntu安装Android Studio开发环境
- web嵌入到原生的app里需要注意的事项
- Android RecyclerView 基本使用
- Data mapping-数据映射
- Android开发支付集成——微信集成
- 硬盘与固态硬盘区别是啥?SSD固态硬盘所有方面解析
- SSD固态硬盘4K对齐:无损硬盘数据成功SSD扇区4K对齐图文详细教程