【SpringMVC】应用分层

8e19eee2be5648b78d93fbff2488137b.png

阿华代码,不是逆风,就是我疯

你们的点赞收藏是我前进最大的动力!!

希望本文内容能够帮助到你!!

目录

一:场景引入

二:前后端分离三层架构

1:表现层

2:业务逻辑层

3:数据层

4:举例

 三:MVC如何分层

四:基于MVC架构代码分层

1:Controller

2:Service

3:Dao

五:三层架构和MVC架构的关系

1:区别

(1)MVC架构模式

(2)前后端分离三层架构模式

(3)两种模式可以共存

2:联系

六:应用分层的好处

七:规范


一:场景引入

当做一个大项目时候,如果直接写代码,最后的结果是代码繁杂冗乱,层次混乱,

于是在Java中,在实现一个项目的前期准备时,会对项目进行工作的拆分,进行分层处理,就好比一个公司,有财务部门,法务部门,人事部门.........各司其职,这就是粗粒度细化的结果

项目开发也是:前后端一起做,前后端分离,后端根据功能在细分

二:前后端分离三层架构

⽬前现在更主流的开发⽅式是"前后端分离"的⽅式,把整体架构分为表现层、业务逻辑层和数据层.这种分层⽅式称之为"三层架构".

1:表现层

就是展⽰数据结果和接受⽤⼾指令的,是最靠近⽤⼾的⼀层;

2:业务逻辑层

负责处理业务逻辑,⾥⾯有复杂业务的具体实现;

3:数据层

负责存储和管理与应⽤程序相关的数据

4:举例

 三:MVC如何分层

MVC就是把整个系统分为了 Model(模型) ,View(视图),Controller(控制器)三层

将用户视图和业务处理分隔开,通过Controller建立剩余两者关系,达到低耦合的效果。
 

四:基于MVC架构代码分层

按照“三层架构”划分,SpringMVC把(上面的)代码划分为三个部分:

1:Controller

控制层,接受前端发送的请求,并对请求进行处理,并响应数据。

2:Service

业务逻辑层,处理具体的业务逻辑

3:Dao

数据访问层,也叫数据持久层,主要负责数据的访问操作,包括数据的增删查改

五:三层架构和MVC架构的关系

1:区别

(1)MVC架构模式

①模型(Model),视图(View)和控制器(Controller)

②强调数据和视图分离,通过控制器对两者进⾏组合

(2)前后端分离三层架构模式

①表现层,业务逻辑层,数据访问层

②强调从不同维度,处理数据的⾼内聚和低耦合,将交互界⾯,业务处理和数据库操作的逻辑分开

(3)两种模式可以共存

比如:模型层拆分出业务逻辑层(Service层)和数据访问层(Dao层)
 

2:联系

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

⼆者的⽬的是相同的,都是"解耦,分层,代码复⽤"

六:应用分层的好处

①降低层与层之间的依赖,结构明确,利于各层逻辑的复⽤
②开发⼈员可以只关注整个结构中的其中某⼀层,降低了维护成本和维护时间
③可以很容易的⽤新的实现来替换原有层次的实现
④有利于标准化

七:规范

①类名使⽤⼤驼峰⻛格但以下情形例外:DO/BO/DTO/VO/AO
②⽅法名、参数名、成员变量、局部变量统⼀使⽤⼩驼峰⻛格
③包名统⼀使⽤⼩写,点分隔符之间有且仅有⼀个⾃然语义的英语单词


⼤驼峰:所有单词⾸字⺟都需要⼤写,⼜叫帕斯卡命名法,⽐如:UserController
⼩驼峰:除了第⼀个单词,其他单词⾸字⺟⼤写,⽐如:userController
蛇形:⽤下划线(_)作⽤单词间的分隔符,⼀般⼩写,⼜叫下划线命名法,⽐如:user_controller
串形:⽤短横线(-)作⽤单词间的分隔符,⼜叫脊柱命名法,⽐如:user-controller
 

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

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

相关文章

防火墙旁挂部署+故障切换

一、实验环境 华为ENSP 二、拓扑 三、目的 1、内网PC1访问Server 2、防火墙旁挂部署,对流量进行过滤,防火墙挂掉之后,内网PC1能继续访问到Server 3、防火墙恢复正常后,流量能回切至防火墙转发 四、思路: 1、AR1…

MySQL8版本升级

1.官方升级手册必看 1.1 理解升级过程会做什么 手册网址:https://dev.mysql.com/doc/refman/8.0/en/upgrading.html 升级mysql 系统数据库(默认的库),升级mysql 用户数据库(用户创建的库) 升级步骤分为…

5G中的随机接入过程可以不用收RAR?

有朋友提到了一种不用接收RAR的RA过程,问这个是怎么回事。其实在刚刚写过的LTM cell switch篇章中就有提到,这里把所有相关的内容整理如下。 在RACH-less LTM场景,在进行LTM cell switch之前就要先知道target cell的TA信息,进而才…

QT数据库SQLite:QsqlTableModel使用总结

数据库连接、数据模型与界面组件所涉及的类之间的关系如下所示: 数据库类 QSqlDatabase 类用于建立与数据库的连接,QSqlDatabase 对象就表示这种连接。QSqlDatabase 类的功能主要分为三大部分: 1、创建数据库连接,即创建 QSqlDat…

C++求20亿内质数的合数“哥德巴赫猜想”

数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24519,其中5和19都是素数。本实验的任务是设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和。 输入格式: 输入…

物品识别 树莓派 5 YOLO v5 v8 v10 11 计算机视觉

0. 要实现的效果 让树莓派可以识别身边的一些物品,比如电脑,鼠标,键盘,杯子,行李箱,双肩包,床,椅子等 1. 硬件设备 树莓派 5 raspberrypi.com/products/raspberry-pi-5/树莓派官方摄…

模型训练数据-MinerU一款Pdf转Markdown软件

模型训练数据-MinerU一款Pdf转Markdown软件-说明 简介: MinerU是什么 MinerU是上海人工智能实验室OpenDataLab团队推出的开源智能数据提取工具,专注于复杂PDF文档的高效解析与提取。MinerU能将包含图片、公式、表格等元素的多模态PDF文档转化为易于分析…

51c深度学习~合集9

我自己的原文哦~ https://blog.51cto.com/whaosoft/12750420 #傅里叶特征 (Fourier Feature)与核回归 位置编码背后的理论解释 本文探讨了位置编码背后的理论基础,特别是傅里叶特征(Fourier Feature)与核回归(Kern…

数据仓库工具箱—读书笔记01(数据仓库、商业智能及维度建模初步)

数据仓库、商业智能及维度建模初步 记录一下读《数据仓库工具箱》时的思考,摘录一些书中关于维度建模比较重要的思想与大家分享🤣🤣🤣 博主在这里先把这本书"变薄"~有时间的小伙伴可以亲自再读一读,感受一下…

【JVM】JVM基础教程(三)

上一章:【JVM】JVM基础教程(二)-CSDN博客 目录 运行时数据区 应用场景 程序计数器 程序计数器在运行时会出现内存溢出吗? 栈 IDEA的debug工具查看栈帧的内容 栈帧的组成 局部变量表 关于 this 的内存存储 操作数栈 帧…

如何编译安装系统settings设置应用(5.0.0-Release)

本文介绍如何在OpenHarmony 5.0.0 r版本中修改系统设置应用,并且编译安装到开发板上 开发环境 1.dayu200开发板 2.OpenHarmony 5.0.0r 固件 3.API12 full sdk (如果安装full sdk过程中出现报错hvigor ERROR: Cannot find module typescript,请参考 h…

【Unity】Amplify Shader Editor

Amplify Shader Editor (ASE) Amplify Shader Editor,是一个功能强大的基于节点的着色器开发工具,允许开发者在 Unity 中轻松创建和管理复杂的 Shader。 主要功能和特点 基于节点的编辑器: • 提供直观的可视化界面,减少手写 Sh…

Github2024-12-10 Python开源项目日报 Top10

根据Github Trendings的统计,今日(2024-12-10统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目10HTML项目1Rust项目1系统设计指南 创建周期:2507 天开发语言:Python协议类型:OtherStar数量:241693 个Fork数量:42010 次关注人…

1.2.3计算机软件

一个完整的计算机系统由硬件和软件组成,用户使用软件,而软件运行在硬件之上,软件进一步的划分为两类:应用软件和系统软件。普通用户通常只会跟应用软件打交道。应用软件是为了解决用户的某种特定的需求而研发出来的。除了每个人都…

ElementEye,网页分析器

介绍 我们经常使用Python写爬虫,爬到网页数据之后,就需要用beautifulSoup进行解析。因为写爬虫并不是我的主营工作,大多数只是用来分析一下想要的数据而已,所以经常会忘记beautifulSoup的用法。 同时,我们总是分析页面…

Qt 联合Halcon配置

文章目录 配置代码窗口绑定 配置 选择添加库 选择外部库 LIBS -LC:/Program Files/MVTec/HALCON-17.12-Progress/lib/x64-win64/ LIBS -lhalconcpp\-lhdevenginecpp\-lhalconINCLUDEPATH C:/Program Files/MVTec/HALCON-17.12-Progress/include DEPENDPATH C:/Program Fil…

图像像素如何排列?是如何存储到diocm里面?读取到内存中是如何存储?

图像像素的排列和存储在DICOM(Digital Imaging and Communications in Medicine,医学数字成像和通信)文件中遵循特定的标准。DICOM 是一种国际标准(ISO 12052),用于处理、存储、打印和传输医学影像信息。 …

深度学习常用损失函数介绍

均方差损失(Mean Square Error,MSE) 均方误差损失又称为二次损失、L2损失,常用于回归预测任务中。均方误差函数通过计算预测值和实际值之间距离(即误差)的平方来衡量模型优劣。即预测值和真实值越接近&…

在PowerShell下运行curl命令出现错误:Invoke-WebRequest : 无法处理参数,因为参数名称“u”具有二义性

今天在Windows 11下测试Nanamq的HTTP API,按照其文档输入: curl -i --basic -u admin:public -X GET "http://localhost:8081/api/v4/subscriptions" 结果出现二义性错误: 而且输入curl --help命令想看看参数说明的时候&#xff…

学者观察 | Web 3.0生态治理及其安全——北京交通大学副教授李超

导语 李超教授认为Web 3.0中无论是链上治理还是链下治理都有其优劣。链下治理机制更侧重于社区广泛参与和讨论,过程较为繁琐,但能够形成广泛的社区支持和参与,增强决策的合法性和接受度;链上治理机制通过直接在区块链上执行决策&…