什么是SpringMVC?简单好理解!什么是应用分层?SpringMVC与应用分层的关系? 什么是三层架构?SpringMVC与三层架构的关系?

简介: 文章解释了SpringMVC的概念和各部分功能,探讨了应用分层的原因和具体实施的三层架构,以及SpringMVC与三层架构之间的关系和联系。

1、SpringMVC是什么?

SpringMVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分。简化开发,减少出错,方便组内开发人员之间的配合。

以上是它的较为官方的概念,下面我将用大白话来诠释什么是SpringMVC

MVC就是把一个项目分成了三部分,如图:(下面目录2有详细解释)

MVC是一种思想,Spring进行了实现,称为SpringMVC(下面目录2有详细解释)

下面这张图片用于浏览器url直接发送请求时:(下面这张图不重要,主要记住上面的图)

SpringMVC当初在前后端不分离(比如JSP)的项目中大展拳脚

近些年来,由前后端分离等原因,SpringMVC的概念又发生了一些变化(下面目录3有详细解释)

2、SpringMVC图解各部分详情

MVC是思想,就是把一个项目分成了三部分

SpringMVC进行了实现,称为SpringMVC

  • Model模型层用来处理业务逻辑,处理数据,内部放置的是项目的逻辑以及方法的实现相关代码
  • Controller控制器层选择处理模型,选择视图,实现前后端交互是View层和Model层交流的桥梁
  • View层面向用户,用于界面显示,人机交互

用户的请求在View层接收后,发送到Controller层,Controller层交给对应的,能处理用户请求的Model层

  • View层相当于用户,Controller相当于前台,Model相当于各个部门
  • 用户带着要求来到前台(View),前台(Controller)听完用户要求后,将其交给对应的销售部、广告部等部门(Model)

下面这张图只是用户的请求直接发给了Controller控制器层,没有经过View层

比如浏览器url路径直接发送请求或者PostMan等工具发送请求时就更适用于下面这张图

3、SpringMVC概念最新版(前后端不分离)

当前阶段,MVC的概念又发生了一些变化,后端开发人员不涉及前端页面的开发,所以也就没有View层

所以View层又有了一层解释,之前返回的是视图,现在返回的是视图所需要的数据

例如:

4、应用分层概念

前言:

    类似公司的组织架构  
    公司初创阶段,⼀个⼈⾝兼数职,既做财务,⼜做⼈事,还有⾏政.  
    随着公司的逐渐壮⼤,会把岗位进⾏细分,划分为财务部⻔,⼈事部⻔,⾏政部⻔等,各个部⻔内部还会**再进⾏细分.**

    项⽬开发也是类似,最开始功能简单时,我们前后端放在⼀起开发,随着项⽬功能的复杂,我们分为前端和后端不同的团队,甚⾄更细粒度的团队。

    后端开发也会根据功能再进⾏细分.MVC就是其中的⼀种拆分⽅式.  
    但是**随着后端⼈员不再涉及前端,后端开发⼜有了新的分层⽅式.**

什么是应用分层呢?(概念)

    应用分层是一种软件开发设计思想,它将应用程序分成N个层次,这N个层次分别负责各自的职责,多个层次之间协同提供完整的功能,根据项目的复杂度,把项目分成三层,四层甚至更多层

    常见的MVC设计模式,就是应用分层的一种具体体现

为什么需要应用分层?(了解即可)

     在最开始的时候,为了让项目快速上线,我们通常是不考虑分层的,但是随着业务越来越复杂,大量的代码混在一起,会出现逻辑不清晰、各模块相互依赖、代码扩展性差、改动一处就牵一发而动全身等问题,所以学习对项目进行分层就是我们程序员的必修课了

5、如何分层(三层架构) (具体实现)—— 重要!

    MVC就是一种标准的软件分层架构,但目前更主流的开发方式是“前后端分离”的方式,后端开发工程师不再需要关注前端的实现,所以对于Java后端开发者,又有了一种新的分层架构:把整体架构分为表现层(Controller)、业务逻辑层(Service)和数据层(Dao),这种分层方式也称之为“三层架构”
  • 表现层:就是展示数据结果和接受用户指令的,是最靠近用户的一层
  • 业务逻辑层:负责处理业务逻辑,里面有复杂业务的具体实现
  • 数据层:负责存储和管理与应用程序相关的数据

这三个部分在Spring中的体现:

  • Controller:控制层。接收前端发送的请求,对请求进行处理,并响应数据
  • Service:业务逻辑层。处理具体的业务逻辑
  • Dao:数据访问层,也称为持久层。负责数据访问操作,包括数据的增、删、改、查

下面展示一张没有经过三层架构分层的代码:

解释代码意思(仅解释代码在干什么,分层解释在图下面,不在此处):

    此段代码用来查询书籍信息mockData是构建假数据,用来测试用

    如果书籍信息中的状态为1,则设置可借阅出去,不为1,则设置不可借阅出去

    最后将所有数据(books)返回

按照上面的层次划分,SpringMVC站在后端开发人员的角度上,也进行了支持,把上面的的代码划分为三个部分:

  • 请求处理、响应数据:负责、接收页面的请求,给页面响应数据
  • 逻辑处理:负责业务逻辑处理的代码
  • 数据访问:负责业务数据的维护操作,包括增、删、改、查

这三个部分在Spring的实现中均有体现,也就是刚才的Controller、Service、Dao

针对上述的分层思想,进行代码重构:

注:此处为了方便演示代码,左侧结构中没有进行前后端的完全分离,实际需要完全分离

Controller:

Service:

Dao:

可以明显看到,分层后,每个模块间的关系更加明确了然等好处

6、MVC与三层架构的区别和联系

    关于二者的关系,一直存在不同的观点,有人认为三层架构是MVC模式的一种实现,也有人认为MVC是三层架构的替代方案,等等各种说法都有,根本原因是大家站在不同的角度看待这个问题的,下面是我查询各种资料后总结出来的较为靠谱的观点

从概念上讲,二者都是软件工程领域中的架构模式

  • MVC模式架构由三部分组成,分别是:模型(Model),视图(View)和控制器(Controller)
  • 三层架构将业务应用划分为:表现层(Controller),业务逻辑层(Service),数据访问层(Dao)

MVC中,视图和控制器合起来对应三层架构中的表现层,模型对应三层架构中的业务逻辑层,数据层,以及实体类

二者其实是从不同角度对软件工程进行了抽象

  • MVC模式强调数据和视图分离,将数据展示和数据分离分开,通过控制器对两者进行结合
  • 三层架构强调不同维度数据处理的高内聚和低耦合,将交互界面,业务处理和数据库操作的逻辑分开。

角度不同也就谈不上互相替代了,在日常的开发中可以经常看到两种共存的情况,比如我们设计模型层的时候往往也会拆分出业务逻辑层(Service层)和数据访问层(Dao层)

但是二者的目的是相同的,都是“解耦,分层,代码复用”

🧸欢迎您于百忙之中阅读这篇博客,📜希望这篇博客给您带来了一些帮助,祝您生活愉快!

目录
相关文章
|
5月前
|
前端开发 Java 数据库
什么是MVC三层结构
什么是MVC三层结构
37 2
|
5月前
|
前端开发 Java PHP
信息系统架构模型(1) MVC
信息系统架构模型(1) MVC
59 0
|
数据库
三层架构小结
三层架构小结
54 0
|
10月前
|
存储 Java 数据库
三层架构介绍
三层架构介绍
121 0
|
存储 前端开发 数据库
|
前端开发 Java 数据库连接
超详细讲解SpringMVC三层架构
超详细讲解SpringMVC三层架构
503 0
|
存储 数据处理 数据库
C#三层架构
DAL(Data Access Layer),数据访问层。与数据库打交道。访问数据库,对数据表进行Select,Insert,Update,Delete操作,并且将处理后的数据保存到数据库
|
存储 数据库
三层架构总结
三层架构总结
117 0
|
SQL 移动开发 缓存
给MVC三层架构加一层Manager层!
给MVC三层架构加一层Manager层!
140 0
|
SQL 移动开发 缓存
为什么阿里建议给MVC三层架构再加一层Manager层!
为什么阿里建议给MVC三层架构再加一层Manager层!
213 0