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. 有利于标准化

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/540018.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

正则表达式:量词(三)

正则表达式中的量词有以下几种:1. *: 匹配前面的字符0次或多次。2. : 匹配前面的字符1次或多次。3.?: 匹配前面的字符0次或1次。4. {n}: 匹配前面的字符恰好n次。5. {n,}: 匹配前面的字符至少n次。6. {n,m}:匹配前面的字符至少n次,但不超过m次。 以下是使用Python的…

0.1 + 0.2 不等于 0.3 ?这是为什么?一篇讲清楚!!!

0.1 0.2 不等于 0.3 ?这是为什么?一篇讲清楚!!! 分类 编程技术 在很多编程语言中,我们都会发现一个奇怪的现象,就是计算 0.1 0.2,它得到的结果并不是 0.3,比如 C、C、…

C语言--结构体大小

基本数据类型占用的字节数分别为:char(1),short(2),int(4),long(4),long long(8),float(4),double(8)。 分析一下下面结构体占用的字节数。 struct A { int a; }; struct B { char a; int b; }; int main() { printf("sizeof(struct A)%d\n", sizeof(struct A));//测…

云计算:OVS 集群 使用 Geneve 流表

目录 一、实验 1.环境 2.OVS 集群 使用 Geneve 流表 二、问题 1.VXLAN与Geneve区别 一、实验 1.环境 (1) 主机 表1 宿主机 主机架构软件IP网卡备注ovs_controller控制端 karaf 0.7.3 192.168.204.63 1个NAT网卡 (204网段) 已部署ovs_server01服务…

推荐一款轻量级的hosts文件编辑器(免安装版)

在管理和编辑hosts文件时,一款简单而有效的工具是非常重要的。下面推荐一款免安装版的轻量级hosts文件编辑器,让你轻松管理你的hosts文件。 windows系统默认hosts文件位置 下载地址:https://www.alipan.com/s/8kSns9eAi9f

Day23_学点儿Java_多态复习

1 做错的选择题 Java中的多态性是通过以下哪个机制实现的?() A. 方法重载 B. 方法覆盖 C. 抽象类 D. 接口2 多态复习 2.1 学点儿Java_Day7_继承、重载、重写、多态、抽象类 2.2 面向对象四大基本特征 封装、抽象、继承、多态 封装 面向…

视频号小店究竟有什么秘密,值得商家疯狂入驻,商家必看!

大家好,我是电商花花。 我们都知道视频号和抖音本身都是一个短视频平台,但是随着直播电商的发展,背后的流量推动逐步显露出强大的红利市场和变现机会。 视频号小店流量大和赚钱之外,还非常适合普通人创业。 这也使得越来越多的…

久菜盒子|可实现需求|Advanced Economic Evaluation(作业,资源免费获取)

数据资源下载地址:https://download.csdn.net/download/weixin_68126662/89101333 R代码参考: ############################################################################# ### ### GLBH0046: Advanced Economic Evaluation ### ### Practical 1…

BUUCTF刷题十一道(12)附-SSTI专题二

文章目录 学习文章[CISCN2019 华东南赛区]Web11【存疑】[RootersCTF2019]I_<3_Flask 学习文章 SSTI-服务端模板注入漏洞 flask之ssti模板注入从零到入门 CTFSHOW SSTI篇-yu22x SSTI模板注入绕过&#xff08;进阶篇&#xff09;-yu22x SSTI模板注入学习-竹言笙熙 全部总结看最…

六:ReentrantLock —— 可重入锁

目录 1、ReentrantLock 入门2、ReentrantLock 结构2.1、构造方法&#xff1a;默认为非公平锁2.2、三大内部类2.2、lock()&#xff1a;加锁【不可中断锁】2.2.1、acquire() 方法 —— AQS【模板方法】2.2.2.1 tryAcquire() 方法 —— AQS&#xff0c;由子类去实现2.2.2.2. addWa…

引人共鸣的情感视频素材在哪找?今天看这五个网站

朋友们好啊&#xff0c;最近是不是不少人都在发愁啊&#xff0c;优秀创作者做视频用的视频素材哪来的啊&#xff1f;今天我为朋友们准备了几个优秀的视频素材网站&#xff0c;让你们做视频不再缺少素材&#xff0c;然后还有几个辅助创作的工具&#xff0c;都是你们需要的&#…

了解虚拟路由器冗余协议(VRRP)

虚拟路由器冗余协议&#xff08;VRRP&#xff09;是一种被广泛使用的网络协议&#xff0c;旨在增强网络的可靠性和可用性。对于网络管理员和工程师来说&#xff0c;了解VRRP是确保网络能够实现无缝故障转移和保持不间断连接的关键。本文将深入探讨VRRP的基础知识&#xff0c;包…

贪心算法|968.监控二叉树

力扣题目链接 class Solution { private:int result;int traversal(TreeNode* cur) {// 空节点&#xff0c;该节点有覆盖if (cur NULL) return 2;int left traversal(cur->left); // 左int right traversal(cur->right); // 右// 情况1// 左右节点都有覆盖if (le…

GPT与Python结合应用于遥感降水数据处理、ERA5大气再分析数据的统计分析、干旱监测及风能和太阳能资源评估等大气科学关键场景

如何结合最新AI模型与Python技术处理和分析气候数据。介绍包括GPT-4等先进AI工具&#xff0c;旨在帮助大家掌握这些工具的功能及应用范围。 内容覆盖使用GPT处理数据、生成论文摘要、文献综述、技术方法分析等实战案例&#xff0c;使大家能够将AI技术广泛应用于科研工作。特别关…

摩天大楼为什么建不成

小小学校让搞什么生活中的数学&#xff0c;推荐主题各种高大上&#xff0c;而我独爱简单&#xff0c;昨天讲了大概&#xff0c;仅从电梯开销说明摩天大楼为什么不能无限高&#xff0c;今天作文记下。不过最终&#xff0c;我还是没有选择这个题目&#xff0c;而是帮助小小讲区块…

【Git教程】(十)版本库之间的依赖 —— 项目与子模块之间的依赖、与子树之间的依赖 ~

Git教程 版本库之间的依赖 1️⃣ 与子模块之间的依赖2️⃣ 与子树之间的依赖&#x1f33e; 总结 在 Git 中&#xff0c;版本库是发行单位&#xff0c;代表的是一个版本&#xff0c;而分支或标签则只能被创建在版本库这个整体中。如果一个项目中包含了若干个子项目&#xff0c;…

修复开始菜单消失或不能工作的几种方法,总有一种适合你

如果Windows开始菜单消失或按Windows键时无法打开,请修复Windows 11或Windows 10 PC上的一些系统组件,使菜单重新工作。下面是如何做到这一点。 作为基本修复,请重新启动Windows 11或Windows 10 PC,看看是否解决了问题。如果没有,请使用以下故障排除方法。 使任务栏可见…

MATLAB如何分析根轨迹(rlocus)

根轨迹分析是一种图形化方法&#xff0c;用于研究闭环极点随系统参数&#xff08;通常是反馈增益&#xff09;变化时的移动情况。 绘制根轨迹目的就是改变系统的闭环极点,使得系统由不稳定变为稳定或者使得稳定的系统变得更加稳定。 主导极点 主导极点就是离虚轴最近的闭环极…

【通信原理笔记】【三】——3.7 频分复用

文章目录 前言一、时分复用&#xff08;TDM&#xff09;二、频分复用&#xff08;FDM&#xff09;总结 前言 现在我们学习了几种调制模拟基带信号的方法&#xff0c;这些调制方法可以将基带信号搬移到频带进行传输。那么如果采用不同的载波频率把多个基带信号搬移到不同的频带…

京东详情比价接口优惠券(2)

京东详情API接口在电子商务中的应用与作用性体现在多个方面&#xff0c;对于电商平台、商家以及用户都带来了显著的价值。 首先&#xff0c;从应用的角度来看&#xff0c;京东详情API接口为开发者提供了一整套丰富的功能和工具&#xff0c;使他们能够轻松地与京东平台进行交互。…