【SpringMVC】应用分层

news2025/4/18 1:08:43

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
 

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

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

相关文章

【TCP 网络通信(发送端 + 接收端)实例 —— Python】

TCP 网络通信(发送端 接收端)实例 —— Python 1. 引言2. 创建 TCP 服务器(接收端)2.1 代码示例:TCP 服务器2.2 代码解释: 3. 创建 TCP 客户端(发送端)3.1 代码示例:TCP…

在阿里云/Linux环境搭建Gitblit服务

在阿里云/Linux环境搭建Gitblit服务 1. 整体描述2. 前期准备3. 安装步骤3.1 下载gitblit3.2 上传gitblit3.3 解压文件3.4 修改文件配置3.5 启动gitblit3.6 安全组配置 4. 总结 1. 整体描述 前段时间买了一个阿里云服务器,2核2G,3M固定带宽的配置&#x…

定时任务——xxl-job源码解析

摘要 本文深入解析了xxl-job的源码,xxl-job是一个分布式任务调度平台,其核心设计思想是将调度行为抽象成“调度中心”,而任务逻辑则由“执行器”处理,实现调度与任务的解耦。文章详细介绍了调度器和执行器的初始化流程、任务执行…

吉他初学者学习网站搭建系列(9)——如何用coze做一个网站助手

文章目录 背景功能搭建智能体新增工作流效果总结 背景 随着AI大模型的普及,国内也涌现出许多帮助用户更便捷使用大模型的平台。扣子就是其中之一。国内已经有蛮多用户了,我试用了这个平台,来给我的网站搭建一个小助手,效果非常好…

Anaconda 下安装OpenCV 4.10.0

大家也可以使用pip安装。 pip install opencv-python4.10.0 这里使用conda安装 conda install opencv4.10.0 import cv2 print(cv2.__version__)

帝可得-商品管理

商品管理 需求说明 商品管理主要涉及到三个功能模块,业务流程如下: 新增商品类型: 定义商品的不同分类,如饮料、零食、日用品等。新增商品: 添加新的商品信息,包括名称、规格、价格、类型等。设备货道管理: 将商品与售货机的货…

前端知识1html

VScode一些快捷键 Ctrl/——注释 !——生成html框架元素 *n——生成n个标签 直接书写html的名字回车生成对应的标签 常见标签 span&#xff1a; <span style"color: red;">hello</span> <span>demo</span> span实现&#xff1a; 标题…

【后端面试总结】tcp为什么要设置TIME_WAIT

设置TIME_WAIT的原因 相信大家对tcp的三次握手和四次挥手的过程已经非常熟悉了&#xff0c;但是对于四次挥手来说&#xff0c;有个问题一直困扰着我&#xff0c;那就是为什么在server端发送LAST_ACK之后&#xff0c;还要等待TIME_WAIT时间呢&#xff1f;原因有二&#xff1a; …

vue中使用socket.io统计在线用户

目录 一、引入相关模块 二、store/modules 中封装socketio 三、后端代码(nodejs) 一、引入相关模块 main.js 中参考以下代码 ,另外socketio的使用在查阅其它相关文章时有出入,还是尽量以官方文档为准 import VueSocketIO from vue-socket.io import SocketIO from socket.io-…

Redis的五种数据类型(Set、Zset)

目录 1. Set 集合1.1 Set介绍1.2 常见命令1.2.1 SADD命令1.2.2 SMEMBERS命令1.2.3 SISMEMBER命令1.2.4 SCARD命令1.2.5 SPOP命令1.2.6 SMOVE命令1.2.7 SREM命令 1.3 集合间操作1.3.1 SINTER命令1.3.2 SINTERSTORE命令1.3.3 SUNION命令1.3.4 SUNIONSTORE命令1.3.5 SDIFF命令1.3.…

【CSS in Depth 2 精译_067】11.2 颜色的定义(中):CSS 中的色域与色彩空间

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第四部分 视觉增强技术 ✔️【第 11 章 颜色与对比】 ✔️ 11.1 通过对比进行交流 11.1.1 模式的建立11.1.2 还原设计稿 11.2 颜色的定义 11.2.1 色域与色彩空间 ✔️11.2.2 深入理解颜色表示法 文…

MVC基础——市场管理系统(一)

文章目录 项目地址一、创建项目结构1.1 创建程序以及Controller1.2 创建View1.3 创建Models层,并且在Edit页面显示1.4 创建Layou模板页面1.5 创建静态文件css中间件二、Categories的CRUD2.1 使用静态仓库存储数据2.2 将Categorie的列表显示在页面中(List)2.3 创建_ViewImport.…

[241206] X-CMD 发布 v0.4.15:env 升级,mirror 支持华为/腾讯 npm 镜像,pb-wayland 剪贴板

目录 X-CMD 发布 v0.4.15&#x1f4c3;Changelog&#x1f4e6; env|pkg&#x1fa9e; mirror&#x1f4d1; pb&#x1f3a8; theme|starship|ohmyposh&#x1f916; chat&#x1f4dd; man✅ 升级指南 X-CMD 发布 v0.4.15 &#x1f4c3;Changelog &#x1f4e6; env|pkg 新增…

# 深入浅出 快速认识JAVA常用数据结构【栈, 队列, 链表, 数组】

快速认识JAVA常用数据结构【栈, 队列, 链表】 前言 什么是数据结构 一种用来存储和组织数据的方法&#xff0c;描述了数据之间的关系和操作方式。通过合理选择和使用数据结构&#xff0c;可以大幅提高程序的运行效率、存储效率以及代码可维护性。 数据结构的重要性 数据结构…

fastadmin 后台插件制作方法

目录 一&#xff1a;开发流程 二&#xff1a;开发过程 &#xff08;一&#xff09;&#xff1a;后台功能开发 &#xff08;二&#xff09;&#xff1a;功能打包到插件目录 &#xff08;三&#xff09;&#xff1a;打包插件 &#xff08;四&#xff09;&#xff1a;安装插件…

使用Dapper创建一个简单的查询

1.先在NuGet上下载Dapper包 2.创建对应的model 代码如下&#xff1a; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 数据显示 {public class User{public int UserId { get; set; }public…

雨晨 2610(2)0.2510 Windows 11 24H2 Iot 企业版 LTSC 2024 极简 2in1

文件: 雨晨 2610(2)0.2510 Windows 11 24H2 Iot 企业版 LTSC 2024 极简 2in1 install.esd 索引: 1 名称: Windows 11 IoT 企业版 LTSC 极简 26100.2510 描述: Windows 11 IoT 企业版 LTSC 极简 26100.2510 By YCDISM RTM 2025 24-12-07 大小: 8,176,452,990 个字节 索引: 2 …

Kubernetes 深入浅出系列 | 容器编排与作业调度之Deployment

目录 概述Deployment 的更新原理实验 概述 Kubernetes 中&#xff0c;Deployment 控制器是用于管理应用程序生命周期的核心对象。Deployment 通过管理 ReplicaSet 来间接控制 Pod&#xff0c;确保在任何时刻都能维持指定数量的 Pod 副本。这种间接管理使得 Deployment 功能比 …

网络练级宝典-> UDP传输层协议

目录 传输层 端口号 端口号和进程的关系 UDP协议 UDP协议格式 UDP数据封装&#xff1a; UDP数据分用&#xff1a; 面向数据报 UDP的缓冲区 UDP的缺点 基于UDP的应用层协议 传输层 端口号 我们知道端口号对应的其实就是一个进程的pid&#xff0c;在操作系统中二者的…

Ubuntu22.04系统源码编译OpenCV 4.10.0(包含opencv_contrib)

因项目需要使用不同版本的OpenCV&#xff0c;而本地的Ubuntu22.04系统装了ROS2自带OpenCV 4.5.4的版本&#xff0c;于是编译一个OpenCV 4.10.0&#xff08;带opencv_contrib&#xff09;版本&#xff0c;给特定的项目使用&#xff0c;这就不用换个设备后重新安装OpenCV 了&…