Spring和SpringMVC的区别是什么?各自的优缺点是什么?

XIAO 2020-03-23 15:38:11 java常见问答 7335

It行业的人都知道,Spring和SpringMVC其实都是一种应用开发框架。都是可能还是有不少人不是很清楚它们两者之间的关系,所以我们就来看看Spring和SpringMVC的区别是什么?它们各种的优缺点又是什么呢?

Spring是IOC和AOP的容器框架,而SpringMVC是基于Spring功能之上添加的Web框架,想用SpringMVC必须先依赖Spring。接下来我们就分别来看看Spring和SpringMvc。

Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。

目的:解决企业应用开发的复杂性

功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能

范围:任何Java应用

SpringMvc

(1)SpringMvc给spring的表现层提供支持

(2)SpringMvc的流程:

1、 用户发送请求至前端控制器DispatcherServlet;

2、DispatcherServlet收到请求调用HandlerMapping处理器映射器;

3、处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;

4、DispatcherServlet通过HandlerAdapter处理器适配器调用处理器,执行处理器(Controller,也叫后端控制器);

5、Controller执行完成返回ModelAndView,并返回给HandlerAdapter,HandlerAdapter将结果返回给DispatcherServlet;

6、DispatcherServlet将ModelAndView传给ViewReslover视图解析器,ViewReslover解析后返回具体View给DispatcherServlet;

7、DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)后返回给给客户

基于以上表述,我们可以看到,其实SpringMvc是基于Spring的这样一种关系,Spring可以说是一个管理bean的容器,也可以说是包括很多开源项目的总称,SpringMvc是其中一个开源项目,所以简单走个流程的话,http请求一到,由容器(如:tomact)解析http搞成一个request,通过映射关系(路径,方法,参数啊)被SpringMvc一个分发器去找到可以处理这个请求的bean,那tomcat里面就由spring管理bean的一个池子(bean容器)里面找到,处理完了就把响应返回回去。

SpringMVC是一个MVC模式的WEB开发框架;

Spring是一个通用解决方案, 最大的用处就是通过Ioc/AOP解耦, 降低软件复杂性, 所以Spring可以结合SpringMVC等很多其他解决方案一起使用, 不仅仅只适用于WEB开发。

Spring的优势不言而喻:

1. 提供了一种管理对象的方法,可以把中间层对象有效地组织起来。一个完美的框架“黏合剂”。

2. 采用了分层结构,可以增量引入到项目中。

3. 有利于面向接口编程习惯的养成。

4. 目的之一是为了写出易于测试的代码。

5. 非侵入性,应用程序对Spring API的依赖可以减至最小限度。

6. 一致的数据访问介面。

6. 一个轻量级的架构解决方案。

但如果从以下方面观察,结合项目实际经验,个人感觉这些技术的应用大大降低了应用程序的可维护性,尤其是面对一个陌生的系统,或者项目人员变动频繁的时候。

1. 中断了应用程序的逻辑,使代码变得不完整,不直观。此时单从Source无法完全把握应用的所有行为。

2. 将原本应该代码化的逻辑配置化,增加了出错的机会以及额外的负担。

3. 时光倒退,失去了IDE的支持。在目前IDE功能日益强大的时代,以往代码重构等让人头痛的举动越来越容易。而且IDE还提供了诸多强大的辅助功能,使得编程的门槛降低很多。通常来说,维护代码要比维护配置文件,或者配置文件+代码的混合体要容易的多。

4. 调试阶段不直观,后期的bug对应阶段,不容易判断问题所在。

SpringMVC的优点:

1、springMVC是使用了MVC设计思想的轻量级web框架,对web层进行解耦,是的我们开发更简洁。

2、与Spring无缝衔接。

3、灵活的数据验证,格式化,数据绑定机制。

SpringMVC的缺点:

1, Spring与MVC 的Servlet API 耦合,难以脱离容器独立运行,

2, 太过于细分,开发效率低

3, 过度追求完美,有过度设计的危险

以上就是关于Spring和SpringMVC的区别与优缺点的所有内容了,还想了解更多相关内容,关本站消息即可。