天天看點

帶着問題學 Spring MVC 源碼: 一、概述

q:什麼是 spring mvc ? ※

spring mvc 是 spring web 的一個重要子產品。spring 支援 web 應用,spring mvc 是對 mvc 模式的支援。

q:mvc 模式? ※

mvc 模式是種經典的軟體架構,分 model 模型、view 視圖及 controller 控制器 三種角色。架構的意圖明顯區分三種角色的職責,使其不互相依賴。java 領域最經典的實作 jsp + servlet + javabean,後續也陸續出來了衆多優秀架構,ssh 中的 struts ,還有 ssm 中的 spring mvc 等。
帶着問題學 Spring MVC 源碼: 一、概述

q: spring 還要什麼其他子產品? web?ioc 容器?aop?※

ioc 容器子產品、aop 子產品都是。還有資料通路/內建、web 等子產品都是。這裡其他不展開講,其中 web 子產品建立在 ioc 容器之上,要記住。
帶着問題學 Spring MVC 源碼: 一、概述

q: web 子產品包含 springmvc 嗎? ※

包含。web 子產品包含 spring-web、spring-webmvc、spring-websocket和spring-webmvc-portlet。其中 web-mvc 是我們要學習源碼包。 1. spring-web 子產品提供基本 web 內建功能,包括初始化 ioc 容器等工作。 2. spring-webmvc 包含 mvc 模式的實作和 rest web 服務的實作。該子產品基于了 spring-web 子產品。

q: spring-webmvc 子產品具體包含什麼内容? ※

spring-webmvc 子產品裡面包: org.springframework.web.servlet 提供與應用程式上下文基礎結構內建的 servlet,以及 spring web mvc 架構的核心接口和類。 org.springframework.web.servlet.mvc spring 附帶的 servlet mvc 架構的标準控制器實作。 org.springframework.web.servlet.mvc.annotation 用于基于注解的 servlet mvc 控制器的支援包。 org.springframework.web.servlet.mvc.condition 用于根據條件比對傳入請求的公共 mvc 邏輯。 org.springframework.web.servlet.mvc.method 用于處理程式方法處理的基于 servlet 的基礎結構,基于在 org.springframework.web.method 包上。 org.springframework.web.servlet.view 提供标準的 view 和 viewresolver 實作,包括自定義實作的抽象基類。 org.springframework.web.servlet.view.freemarker 支援将 freemarker 內建為 spring web 視圖技術的類。 org.springframework.web.servlet.view.json 支援提供基于 json 序列化的 view 實作的類。 上面列出來核心的包。org.springframework.web.servlet.view 包中, view 視圖實作有常見的:json 、freemarker 等。org.springframework.web.servlet.mvc 包中,controller 控制層實作包括了注解、程式方法處理等封裝。自然,看源碼先從 org.springframework.web.servlet 包看其核心的接口和類。

q: 核心類和接口有哪些? ※

dispatcherservlet 類:排程http請求控制器(或者處理器handler)。 view 視圖層 modelandview 類:模型和視圖的持有者。 view 接口:mvc web 互動。該接口的實作負責呈現視圖或者暴露模型。 controller 控制層 handlermapping 接口: 請求從 dispacherservlet 過來,該接口定義請求和處理程式對象之間的映射。 handlerinterceptor 接口:處理程式的執行連結口。

q: 又是 mvc 的樣子,還有嗎? ※

哦。對了還有張圖:
帶着問題學 Spring MVC 源碼: 一、概述
是以重要的類還有 viewresolver、handleadapter等。

q: 謝謝,下篇聊什麼?

當然聊重要類的源碼實作咯~,下篇見。