前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【源码】带着问题学 Spring MVC 源码: 一、概述

【源码】带着问题学 Spring MVC 源码: 一、概述

作者头像
二哥聊运营工具
发布2021-12-17 08:17:08
3210
发布2021-12-17 08:17:08
举报
文章被收录于专栏:程序员泥瓦匠

摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢!

简单就好,生活可以很德国

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 等。

Q: Spring 还要什么其他模块? Web?IOC 容器?AOP?※

IOC 容器模块、AOP 模块都是。还有数据访问/集成、Web 等模块都是。这里其他不展开讲,其中 Web 模块建立在 IOC 容器之上,要记住。 来自官网的模块图:

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 模块。 资料来源自:官方文档 MVC 章节,其他模块具体参考官网。

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 的样子,还有吗? ※

哦。对了还有张图:

所以重要的类还有 ViewResolver、HandleAdapter等。

Q: 谢谢,下篇聊什么?

当然聊重要类的源码实现咯~,下篇见。

如以上文章或链接对你有帮助的话,别忘了在文章结尾处评论哈~ 你也可以点击页面右边“分享”悬浮按钮哦,让更多的人阅读这篇文章。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员泥瓦匠 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档