第四期技术沙龙——浅析SpringMVC工作原理

Posted 我们的开心

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第四期技术沙龙——浅析SpringMVC工作原理相关的知识,希望对你有一定的参考价值。

第四期技术沙龙——浅析SpringMVC工作原理

文/梁堃

2017年5月26日,上研应用支持二部第四期技术沙龙活动如约而至。本次沙龙由“小鲜肉”梁堃同学,结合切身的研发经历,分享了纯干货的SpingMVC框架原理,内容精彩充实。

第四期技术沙龙——浅析SpringMVC工作原理

梁堃从什么是SpringMVC出发,结合前端MVC框架、太行平台架构、移动办公系统,指出了MVC这一设计模式在现如今的前台、后台、移动端都是不可或缺的,以此为基础,引出基于MVC的Web层框架SpringMVC,逐步介绍了为什么要使用框架开发、SpringMVC的整体开发流程、SpringMVC内部的调用机制以及SpringMVC涉及的设计模式等纯干货的一些基础知识。

一:什么是SpringMVC

第四期技术沙龙——浅析SpringMVC工作原理

SpringMVC是Spring框架的一个重要组成部分,图中IOC容器是框架的核心(主要用于类成员变量对象的注入工作),AOP面向切面编程,这两个是框架的基础设施,DAO层是Spring对持久层的支持,ORM对象关系映射,JEE是一些企业级的组件,Web层框架中就包含SpringMVC,SpringMVC是一个基于mvc的WEB层框架。

二:SpringMVC的初始化内部调用流程

SpringMVC核心类是DispatcherServlet,通过阅读DispatcherServlet源码,可以清晰了解到该核心类继承了HttpServlet。所以要研究SpirngMVC的初始化调用流程就离不开对Servlet生命周期的研究。主讲人根据Servlet生命周期方法并结合SpringMVC源码深入探讨了其初始化调用的init()、initServletBean()、initStrategies()等方法,从而依据initServletBean方法引出了SpringMVC常用的模板设计模式。

第四期技术沙龙——浅析SpringMVC工作原理

三:SpringMVC常用设计模式——模板设计模式

主讲人在介绍初始化方法initServletBean()方法时,介绍了该方法在其父类HttpServletBean中是一个没有任何实现的空方法,空方法的目的是留给子类FrameworkServlet去实现自己想要的初始化逻辑,这也就是SpringMVC常用的模板方法设计模式。

设计模式-模板方法:大的逻辑已经确定,程序员要做的就是实现一些具体的步骤,不同的人实现这些步骤的方法也会有所不同,从而模板的行为也会表现出具体的区别。

四:SpringMVC与Struts2区别

√Struts2是类级别的拦截,一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上SpringMVC就容易实现restful url,而struts2的架构实现起来要费劲,因为Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。√SpringMVC是管理单例开发的,并且建议使用单例开发,Struts2通过类的成员变量接收参数,无法使用单例,所以只能使用多例。

五:技术探讨

SpringMVC结合Spring编程时,SpringMVC启动时需要进行组件扫描、url映射以及设置freemarker参数等,为什么要让SpringMVC不扫描带有@Service注解的类,而是由Spring去对@Service注解的类进行扫描?主讲人也给出了答案:因为SpringMVC的配置文件比Spring的配置文件先加载,如果不这样设置,springmvc则将其有带@Service注解的类都扫描到容器中,等到加载Spring的配置文件的时候,会因为容器已经存在Service类,使得spring的cglib不对Service进行代理,导致Spring的配置文件中的事务配置失效,发生异常时,无法进行数据回滚。

本次沙龙在大家热烈的讨论中结束,通过本次沙龙,各位参与者了解了SpringMVC的整体定位、开发流程、工作原理等。与会同事们发散思维讨论了Spring与SpringMVC结合开发过程中关于扫描@Service注解需要注意的问题,对运维人员了解以SpringMVC框架为基础的系统开发流程、开发人员深入研究SpringMVC工作原理具有一定的指导性作用


作者简介

主讲人梁堃,2016年加入上海软件研发部应用支持二部支持一组。是个致力于成为全栈人才的“四有”好青年,负责个人网银、超级网银等系统的日常运维工作。他还积极参与到自动化运维工具android端的开发中。

第四期技术沙龙——浅析SpringMVC工作原理

第四期技术沙龙——浅析SpringMVC工作原理第四期技术沙龙——浅析SpringMVC工作原理

轮值总编:徐佳琦

美编:吴存远

技术支持:孟秋菊第四期技术沙龙——浅析SpringMVC工作原理

第四期技术沙龙——浅析SpringMVC工作原理

我们的开心 · 总编辑部

(上 研)

-  
快 乐 生 活 
开 心 工 作 

   
我 们 的 开 心
微信号:abc_kx
本文为“我们的开心”第 858期文章  
转载本号文章请联系我们
■欢迎来稿:请按“作品名-来源-作者-部门”命名,发送到abckx@abchina.com或abckx@qq.com

以上是关于第四期技术沙龙——浅析SpringMVC工作原理的主要内容,如果未能解决你的问题,请参考以下文章

「深入实践中的 Node.js」 - Node 地下铁第四期南京站线下沙龙总结

第四十期百度技术沙龙笔记整理

第四十期百度技术沙龙笔记整理

浅析Spring MVC的工作原理及其与Spring的关系

不会英语怎么说springmvc工作原理

第四期技术分享精彩回顾,设计模式和探索Flutter框架