码迷,mamicode.com
首页 > 移动开发 > 详细

一 SpringMVC源码之DispatcherServlet AbstractHanderMapping

时间:2018-06-22 01:09:23      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:web   利用   load   extc   div   hand   技术分享   代码   rap   

一:DipatcherServlet的初始化过程:

 我们可以先看一下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()方法技术分享图片

一 SpringMVC源码之DispatcherServlet AbstractHanderMapping

标签:web   利用   load   extc   div   hand   技术分享   代码   rap   

原文地址:https://www.cnblogs.com/KingLi1024/p/9211489.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!