《JavaEE进阶》----10.<SpringMVC应用分层:【三层架构】>

news2024/11/13 11:24:20

本篇博客我们主要讲解

1.应用的分层:三层架构

2.Spring MVC和三层架构的区别和联系

3.软件设计原则:高内聚低耦合

4.应用分层的好处

5.通过应用分层后的代码示例

一、三层架构简介

阿里开发手册中,关于工程结构部分,定义了常见工程的应用分层结构:

上图的表示层,也叫做表现层。

解释概念 

1.表现层(Controller):展示数据结果和接收用户指令的,是最靠近用户的一层;

2.业务逻辑层(Service):处理业务逻辑,里面有复杂业务的具体实现。

3.数据层(Mapper/Dao):存储和管理与应用程序的相关的数据。

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

SpringMVC

三层架构 

 联系

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

MVC模式强调数据视图分离,将数据展示数据处理分开,通过控制器对两者进行组合.

三层架构强调不同维度数据处理的高内聚和低耦合,将交互界面,业务处理和数据库操作的逻辑分开.角度不同也就谈不上互相替代了,在日常的开发中可以经常看到两种共存的情况,比如我们设计模型层的时候往往也会拆分出业务逻辑层(Service层)和数据访问层(Dao层)。 

我的理解

区别

MVC架构模式组成:模型(Model)、视图(View)、控制器(Controller)

三层架构将业务应用分为:表现层、业务逻辑层、数据访问层。

Spring MVC:是对MVC思想在Spring框架中的一种实现。

三层架构是对代码处理的不同的逻辑功能的封层。

我觉得他们是两个独立的思想。

MVC是站在前后端共同开发时,对开发的理解。V对应前端,MC对应后端。

而如今我们已经前后端分离进行开发,因此实际上MVC的思想其实是有点过时的。

三层结构就是对我们纯后端代码的分层。

联系

但是他们有共同的目的,就是使我们开发程序更加的清晰有条理。

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

并且三层架构中的表现层,对应MVC的视图和控制器,

而MVC中的模型对应三层架构的业务逻辑层,数据层,实体类。

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

三、软件设计原则:高内聚低耦合

高内聚低耦合矛盾吗?

不矛盾

高内聚:指的是一个模块中各个元素之间的联系的紧密程度。

低耦合:指的是各个模块之间的紧密程度。

比如一个企业中,各个部门关联关系要尽可能小,一个部门发生问题,要尽可能降低对其他部门的影响,就是低耦合。

但是部门员工关系要尽量紧密,遇到问题一起解决。这叫高内聚。

比如人体的各个部位中,手、脚、胳膊、腿之间的影响比较小,使得当手受伤,对其他部位影响很小,这就是低耦合。

而人体中,肌肉、骨骼、肌腱等需要相互配合,才能使得人们可以灵活运动。这就需要高内聚,紧密相连。

四、应用分层的好处

1.降低层与层之间的依赖,结构更加的明确,利于各层逻辑的复用。

2.开发人员可以只关注整个结构中的其中某一层,极大的降低了维护成本和维护时间

3.可以很容易的用新的实现来替换原有层次的实现

4.利于标准化。

五、通过应用分层后的代码示例

比如我们写的图书管理系统。如今我们主框架创建三个软件包。

1.Controller

 

2.Service

 

3. Mapper

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

echarts处理y轴最大小值根据数据动态处理、分割数和是否从0开始

方法 /*** 取整* param value 输入值* param scale 保留位数 正数是整数位,负数是小数位* param isUpper true 向上取整 false向下取整* returns*/ const numberFix (value, scale, isUpper) > {const moreThanZero value > 0value Math.abs(value)if (s…

HarmonyOS NEXT 应用运行异常记录与解决(持续整理版)

问题一 App Launch Failed to get the device apiVersion. 解决方案 进入到设备管理,点击对应开启的模拟器设备,先将模拟器关闭,然后点击查出掉用户数据,再重启。 重启之后,一般能解决。如果遇到还是显示拿不到apiVer…

关于GeoTools技术架构知识简介

目录 前言 一、GeoTools架构说明 1、GeoTools Library 2、各模块说明 3、GeoTools插件 4、GeoTools的扩展功能 5、GeoTools的xml支持 二、从Geotools的源码看架构 1、GeoTools源码 2、各功能模块介绍 3、以library来看相关组件 三、总结 前言 作为使用Java语言开发的…

CAD图纸怎么加密?推荐5个有效防止图纸泄露的方法

随着技术的发展,CAD图纸成为了设计和工程领域不可或缺的一部分。然而,这些图纸往往包含敏感信息,一旦泄露可能会给企业带来严重的商业损失或知识产权问题。因此,采取有效的加密和保护措施至关重要。下面将介绍五种有效的方法来保护…

DBMS-2.1 数据库设计(1)——数据库设计与数据模型

本文章的素材与知识均来自于李国良老师的数据库管理系统课程。 数据库设计和数据模型 一.数据模型 1.概念 (1)数据库结构的基础就是数据模型。数据模型是用于描述数据间的联系、数据语义(即数据操作)、一致性(完整性)约束的概念和工具的集合。 2.分…

海外合规|新加坡网络安全认证计划简介(一)

新加坡网络安全局(CSA)为组织制定了网络安全认证计划,旨在表彰具有良好网络安全实践的组织。Cyber Essentials 标志表彰已实施网络卫生措施的组织,而 Cyber Trust 标志则是表彰具有全面网络安全措施和实践的组织的卓越标志。这些标…

【递归、回溯专题(三)】记忆化搜索题集

文章目录 1. 斐波那契数2. 不同路径2. 不同路径3. 最长递增子序列4. 猜数字大小II 1. 斐波那契数 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是&#x…

逻辑器件输出高阻态时,输出端口的电平是什么状态呢?

高阻态是逻辑器件输出端口的一种状态,当端口处于高阻态时,输入端口的电平变化不会引起输出端口变化,不会对与之相连的后级输入端口或总线产生影响,对于总线架构的电路极为重要。   输出端口处于高阻态时,输出端口处于…

什么是分段和分页?

内存管理的必要性 很早之前计算机只能运行单个进程,就算运行批处理程序,也是棑好对,一个一个的进行处理,不存在多个进程并发运行,这时候内核对于内存管理相对比较简单,直接把物理内存地址拿过来是使用即可。…

网络编程TCP和UDP

将TCP的CS模型再敲一遍 TCP服务器 1->创建原始的套接字描述符 2->将原始套接字与主机ip绑定 3->将原始套接字设置监听状态 4->接收客户端连接,获取客户端信息,因为原始套接字被用了,所以创建新的套接字描述符用于客户端通信…

2区SCI仅52天直录!9月甄选SCI/SSCI合集(含各领域)

【SciencePub学术】我处SciencePub学术2024年9月SCI/SSCI/EI/CNKI刊源表已更新!内含多本中科院TOP、CCF推荐以及进展超顺的优质期刊,最快1-2个月录用! 计算机领域重点SCI 环境地质化学领域重点SCI 生物医学领域重点SCI 数学材料物理领域重点S…

拥有这些AI绘画网站,让你轻松告别手绘时代!

在这个充满无限可能的数字世界里,AI 绘画动漫网站已经成为了许多艺术家和设计师的新宠。从手绘时代的岁月如歌,到今天科技的飞速发展,我们已经可以用AI技术创作出令人惊叹的艺术作品,打开了全新的创作空间。接下来,就让…

图形化编程011

项目描述: 点击绿旗,点击空格键,角色向上游动,松开空格键,角色向下飘落。 浮游生物碰到角色会发出声音并隐藏,碰到舞台边缘会重新出现。 30秒后程序结束 。 拆解步骤: 1、添加背景和角色以及…

如何打造一个智能化的远程在线考试系统?

远程教育与在线考试已成为提升知识传播效率和学习灵活性的重要手段。 土著刷题在线考试系统,凭借其完善的多功能考试模块,为教育机构、学校乃至企业提供了一个智能化的远程在线考试解决方案。 接下来将介绍土著刷题在线考试系统如何助力用户构建一个高效…

第L3周:机器学习-逻辑回归

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目标: 逻辑回归适用于分类问题,主要用于解决二分类或多分类的问题。比如:用户购买某商品的可能性,某病人患有某…

单端输入与差分输入

单端输入: 单端输入测量的是一根导线与地之间的电压差,然后将这个差值放大以提供输出。 然而,单端输入容易受到噪声的影响,因为承载信号的导线会吸收电背景噪声。此外,单端输入上的信号还可能受到地环路的影响。 例…

鸿蒙(API 12 Beta6版)图形【NativeDisplaySoloist开发指导】方舟2D图形服务

如果开发者想在独立线程中进行帧率控制的Native侧业务,可以通过DisplaySoloist来实现,如游戏、自绘制UI框架对接等场景。 开发者可以选择多个DisplaySoloist实例共享一个线程,也可以选择每个DisplaySoloist实例独占一个线程。 接口说明 函…

【MySQL00】【 杂七杂八】

文章目录 一、前言二、MySQL 文件1. 参数文件2. 日志文件3. 套接字文件4. pid 文件5. 表结构定义文件6. InnoDB 存储引擎文件 二、BTree 索引排序三、InnoDB 关键特性1. 插入缓冲1.1 Insert Buffer 和 Change Buffer1.1 缓冲合并 2. 两次写2. 自适应哈希索引3. 异步IO4. 刷新邻…

宝藏!《联盟现代控制特训班题库》(麒麟篇) 讲义部分:甄选内容

本文内容,全部选自自动化考研联盟的:初试《现代控制特性班题库》(麒麟篇),分为讲义和习题两个部分,本文为讲义部分的甄选内容,一本书帮你学透现控。 目录 Part1:资料封面&目录 讲义部分目录 Part2&…

为什么很多人都还用着Win10 而不投向Win11的怀抱?

前言 自从Windows 11发布(2021年6月)不知不觉已经过去了3年了。在这三年期间,Windows 11经历了几个大版本的更新。 Windows 10从正式发布开始(2015年7月)至现在已经有9年的历史。而Windows 10的最后一个版本22H2即将在…