百万架构师第十五课:源码分析:Spring 源码分析:SpringMVC核心原理及源码分析|JavaGuide
2025/1/12 23:03:09
本文主要是介绍百万架构师第十五课:源码分析:Spring 源码分析:SpringMVC核心原理及源码分析|JavaGuide,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Spring MVC 一种 Web 开发的设计模式
实现了不同业务层面的解耦,隔离。
http://www.dairan.com?id=?&type=
Model:
将传输数据封装成一个完成的载体。把很多参数传成一个Model。就是一种设计模式,你也可以不封装。
View:
视图,用来展示或者输出的模块(HTML、JSP、JSON、String、Swing、XML…)
Control:
控制交互的一个中间组件,由它来根据用户请求分发不同任务从而得到不同的结果。
DTO,POJO 就是一个 Model
MVC :基于项目开发的设计模式。用来解决用户和后台交互的问题。
J2EE标准
JSP 页面是一个万能的组件,可以写 HTML、写 JS、写 JAVA 逻辑、写 SQL 语句
MVC 框架应运而生: Struts1、Struts2、Webwork、Spring MVC
SpringMVC: 只是 MVC 设计模式的应用典范。给 MVC 的实现制定了一套标准
M:支持将 URL 参数自动封装成一个 Object 或者 Map
V:自己只有一个默认的 template、支持扩展、自定义 View,能够自定义解析
C:做到把限制放宽了,任何一个类,都有可能是一个 Controller
Struts 对用户的要求太高了,Spring MVC 对应用户的要求几乎没有。写几个 annotation 就好了
DispatcherServlet
FrameworkServlet
HttpServletBean
ApplicationContextAware
-setContextInitializers
FrameworkServlet
-refresh()
-onRefresh()
@Override protected void onRefresh(ApplicationContext context) { // Strategy 策略 initStrategies(context); } protected void initStrategies(ApplicationContext context) { // 有九个策略 // 针对于每个用户请求,都会经过一些处理的策略之后,最终才能会有结果输出。 // 每种策略可以自定义敢于,但是最终的结果都是一致 // ModelAndView // ==========这里就是传输中的 Spring MVC 中的九大组件========= initMultipartResolver(context); // 文件上传解析,如果请求类型是 multipart 将通过 MultipartREsolver initLocaleResolver(context);// 本地化解析 initThemeResolver(context);// 主题解析 /** 我们自己会实现 */ initHandlerMappings(context);// 通过 HandlerMapping,将请求映射到处理器 /** 我们自己会实现*/ initHandlerAdapters(context);// 通过 HandlerAdapter 继续进行多类型的参数的动态匹配 initHandlerExceptionResolvers(context);// 如果执行过程中遇到异常,将交给 HandlerExceptionResolvers initRequestToViewNameTranslator(context); // 直接解析请求到视图名 /** 我们自己会实现*/ initViewResolvers(context);// 通过 viewResolver 解析逻辑试图到具体试图实现 initFlashMapManager(context); // flash 映射管理器 }
请求过程:
FrameworkServlet.processRequest()
doService()
DispatcherServlet.doService()
抽象方法调用子类实现,叫做模板方法模式。
MVC 的基本原理:
Spring url 是可以支持正则表达式的。
Spring MVC 讨论
HandlerMapping 是模范了 Struts ActionMapping
严格地说是 Spring MVC 还支持 Ant Pattern
马哥,那你认为它能够干掉 struts 是因为它的哪一点优点呢?
主要是非 Spring MVC,获取 Bean 的方式比较麻烦
需要通过 Spring 应用上下文获取
并且对于 REST 支持,其他框架相对薄弱
Spring MVC 是 Struts 2 + JAX-RS 的混合体
JAX-RS: Java API for RESTful Web Services
来源于: https://javaguide.net
微信公众号:不止极客
这篇关于百万架构师第十五课:源码分析:Spring 源码分析:SpringMVC核心原理及源码分析|JavaGuide的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11有哪些好用的家政团队管理工具?
- 2025-01-11营销人必看的GTM五个指标
- 2025-01-11办公软件在直播电商前期筹划中的应用与推荐
- 2025-01-11提升组织效率:上级管理者如何优化跨部门任务分配
- 2025-01-11酒店精细化运营背后的协同工具支持
- 2025-01-11跨境电商选品全攻略:工具使用、市场数据与选品策略
- 2025-01-11数据驱动酒店管理:在线工具的核心价值解析
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide
- 2025-01-11不得不了解的高效AI办公工具API