服务器端的Spring Boot, Spring MVC,Spring Data JPA,Spring Security和前端的Angular/React
作者:陈龙
链接:https://www.zhihu.com/question/298223034/answer/521330600
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
通过对最近几年接触到的软件开发企业的考察,从技术栈上可以分为下面几个代差,
如果一家公司在用Struts+Spring(XML来配置 依赖注入)+ibatis,这家公司落后主流技术15年。
如果一家公司在用Spring MVC(JSP) + Mybatis + Shiro,这家公司落后主流技术10年。
如果一家公司在用Spring MVC(JSP) + Hibernate + Shiro,这家公司落后主流技术8年。
用不用JSP是一个断代的主要特征,就好像鉴宝那种节目里,专家看了一眼就说这东西是西周晚期什么,因为有什么明显特征一样。用不用JSP是前后端分离的主要特征。
如果一家公司用Spring Boot + Spring MVC(REST) + Spring Data JPA +extjs/EasyUI/Layui,这家公司落后主流技术5年。
如果一家公司用Spring Boot + Spring MVC(REST) + Spring Data JPA + Spring Security + Angularjs,这家公司落后主流技术3年。
如果一家公司用Spring Boot + Spring MVC(REST) + Spring Data JPA + Spring Security + Angular/React/VUE,这家公司处在主流队伍中。
Web浏览器发送HTTP请求到服务端,被Controller(Servlet)获取并进行处理(例如参数解析、请求转发)
Controller(Servlet)调用核心业务逻辑——Model部分
Model进行数据库存取操作,并将操作结果返回给Model
Controller(Servlet)将业务逻辑处理结果交给View(JSP),动态输出HTML内容
动态生成的HTML内容返回到浏览器显示
Spring MVC提供了一个DispacherServlet(可以Spring MVC是以Servlet技术为基础的),这个Servlet把Web应用中Servlet中经常要实现的功能封装起来并提供一层公共抽象,想象对应于一个Web请求后端要做的事情
有了Spring MVC,你只需写简单的POJO代码(如图所示,用POJO实现Controller),或者实现Spring MVC给你提供的接口(比如实现Interceptor做权限判断),就能完成这些繁琐的功能。
而ORM的作用就非常直观了,无须赘述,如图所示它提供了与数据库操作的一层中间抽象,这样Model的代码自然会更加简单。Spring MVC基本可以帮你屏蔽Servlet的API,ORM则可以帮你屏蔽JDBC的API了,也就是说你在更高的抽象层次上写程序了,更高的抽象层次一般意味着以更符合我们思维的方式来思考,自然效率更高
那Spring的作用是什么呢? 看到图中大量的箭头没有?
图中的每一个小方块其实都是大量的Java类来实现,Controller与Model之间,Model与数据访问对象之间的这些箭头,意味这些Java类之间存在大量复杂的依赖关系。Spring的核心功能依赖注入,正是用于管理Java对象之间的依赖关系,所以我们说Spring是一个一站式的粘合框架,它像神奇的胶水一样,可以以松耦合的方式有机的粘合在一起。
作者:David
链接:https://www.zhihu.com/question/21142149/answer/148286909
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。