Spring MVC应用分层(三层架构)

该片文章主要是对 Spring MVC应用分层(三层架构)进行简单的介绍和学习。

一、介绍

1、什么是应用分层

应用分层 是一种 软件开发设计思想 , 它将应用程序分成N个层次, 这N个层次分别负责各自的职责, 多个 层次之间协同提供完整的功能. 根据项目的复杂度, 把项目分成三层, 四层或者更多层.
常见的MVC设计模式, 就是应用分层的⼀种具体体现。

2、为什么需要应用分层

对于一个项目,如果随着业务越来越复杂,大量的 代码混在一起,会出现逻辑不清晰、各模块相互依赖、代码扩展性差、改动一处就牵一发而动全身等 问题. 所以学习对项目进行分层是非常必要的。

二、如何分层(三层架构)

 "MVC", 就是把整体的系统分成了 Model(模型), View(视图)和Controller (控制器)三个层次也就是将用户视图和业务处理隔离开,并且通过控制器连接起来,很好地实现 了表现和逻辑的解耦,是⼀种标准的软件分层架构。

 

现在,对于Java后端开发者, 又有了一种新的分层架构: 把整体架构分为表现层、业务逻辑层和数据层. 这种分层方式也称之为"三层架构".
  • 表现层: 就是展示数据结果和接受用户指令的,是最靠近用户的⼀层;
  • 业务逻辑层: 负责处理业务逻辑, 里面有复杂业务的具体实现;
  • 数据层: 负责存储和管理与应用程序相关的数据

下面看一个不符合这种设计思想的代码例子:

按照上面的层次划分( 把整体架构分为表现层、业务逻辑层和数据层 ), Spring MVC 也进行了支持, 把上面的代码划分为三 个部分:
  • 请求处理、响应数据:负责接收页面的请求,给页面响应数据.
  • 逻辑处理:负责业务逻辑处理的代码.
  • 数据访问:负责业务数据的维护操作,包括增、删、改、查等操作.

这三个部分, 在Spring的实现中, 均有体现:

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

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

关于二者的关系, ⼀直存在不同的观点. 有人认为三层架构是MVC模式的⼀种实现, 也有人认为MVC是三层架构的替代方案等等。
从概念上来讲, 二者都是软件工程领域中的架构模式。
MVC架构模式由三部分组成, 分别是: 模型(Model), 视图(View)和控制器(Controller).
三层架构将业务应用划分为:表现层, 业务逻辑层, 数据访问层。

 

MVC中, 视图和控制器合起来对应三层架构中的表现层.
模型对应三层架构中的业务逻辑层, 数据层, 以及实体类。
二者其实是从不同角度对软件工程进行了抽象.
MVC模式强调 数据和视图分离 , 将数据展示和数据处理分开, 通过控制器对两者进行组合.
三层架构强调 不同维度数据处理的高内聚和低耦合 , 将交互界面, 业务处理和数据库操作的逻辑分开。
二者的目的是相同的, 都是"解耦,分层,代码复用"。
软件设计原则:高内聚低耦合.
高内聚指的是:⼀个模块中各个元素之间的联系的紧密程度,如果各个元素(语句、程序段)之间的联 系程度越高,则内聚性越高,即 "高内聚"。
低耦合指的是:软件中各个层、模块之间的依赖关联程度越低越好。修改⼀处代码, 其他模块的代码 改动越少越好。

四、应用分层的好处

  1. 降低层与层之间的依赖, 结构更加的明确, 利于各层逻辑的复用
  2. 开发人员可以只关注整个结构中的其中某⼀层, 极大地降低了维护成本和维护时间
  3. 可以很容易的用新的实现来替换原有层次的实现
  4. 有利于标准化

 

相关推荐

  1. 分层解耦-架构

    2024-04-14 08:34:03       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-14 08:34:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-14 08:34:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-14 08:34:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-14 08:34:03       18 阅读

热门阅读

  1. FPGA设计之Test bench介绍

    2024-04-14 08:34:03       20 阅读
  2. xpinyin,是我们最喜欢python库

    2024-04-14 08:34:03       18 阅读
  3. python:算法竞赛入门之一

    2024-04-14 08:34:03       16 阅读
  4. skynet 使用protobuf

    2024-04-14 08:34:03       22 阅读
  5. 每日一题:C语言经典例题之矩阵对角线元素之和

    2024-04-14 08:34:03       19 阅读
  6. 【数据库】MVCC

    2024-04-14 08:34:03       17 阅读
  7. VPS服务器的优势有哪些?

    2024-04-14 08:34:03       39 阅读
  8. c# Paxos算法实现

    2024-04-14 08:34:03       19 阅读
  9. Pytorch深度学习完整GPU图像分类代码

    2024-04-14 08:34:03       13 阅读
  10. 密码学基础--搞清RFC和PKCS(2)

    2024-04-14 08:34:03       13 阅读
  11. Kotlin关键字三——fun与方法

    2024-04-14 08:34:03       12 阅读
  12. 图像哈希:QSVD

    2024-04-14 08:34:03       11 阅读
  13. Android retrofit

    2024-04-14 08:34:03       13 阅读