SpringMVC源码分析
DispatcherServlet
是否对下面的配置还有印象
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.SpringMVC.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
上升到Springboot呢?
我们可以在spring-boot-autoconfigure包的spring.factories下找到
org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration,\
org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration,\
org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration,\
org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration,\
org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration,\
org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration,\
springboot web类型加载的是AnnotationConfigServletWebServerApplicationContext容器
SpringMVC请求处理流程
引用spring in action上的一张图来说明了SpringMVC的核心组件和请求处理流程:
- DispatcherServlet是SpringMVC中的前端控制器(front controller),负责接收request并将request转发给对应的处理组件。
- HanlerMapping是SpringMVC中完成url到Controller映射的组件。DispatcherServlet接收request,然后从HandlerMapping查找处理request的controller.
- Cntroller处理request,并返回ModelAndView对象,Controller是SpringMVC中负责处理request的组件(类似于struts2中的Action),ModelAndView是封装结果视图的组件。
④ ⑤ ⑥:视图解析器解析ModelAndView对象并返回对应的视图给客户端。