springboot三层架构详细讲解

news2024/10/6 2:54:04

目录

  • springBoot三层架构
    • 0.简介
    • 1.各层架构
      • 1.1 Controller层
      • 1.2 Service层
      • 1.3 ServiceImpl
      • 1.4 Mapper
      • 1.5 Entity
      • 1.6 Mapper.xml
    • 2.各层之间的联系
      • 2.1 Controller 与 Service
      • 2.2 Service 与 ServiceImpl
      • 2.3 Service 与 Mapper
      • 2.4 Mapper 与 Mapper.xml
      • 2.5 Service 与 Entity
      • 2.6 Controller 与 Entity
    • 3.框架图
    • 4.总结

springBoot三层架构

0.简介

Spring Boot 的三层架构指的是:
1.表示层:这一层通常由 Controller 组成,负责处理 HTTP 请求和向用户展示信息。
2.业务逻辑层:包含 Service 接口及其实现类(ServiceImpl),处理应用程序的核心业务逻辑。
3.数据访问层:由 Mapper 接口和 Mapper.xml 文件组成,负责与数据库交互,执行 CRUD操作。

1.各层架构

1.1 Controller层

作用:处理 HTTP 请求和返回响应给客户端。
结构:通常继承自 @RestController 或使用 @Controller 加上 @RequestMapping。
功能:接收用户输入,调用 Service 层的业务逻辑,处理业务后返回结果。

1.2 Service层

作用:定义业务逻辑。
结构:接口(Service)和实现类(ServiceImpl)。
功能:包含业务操作的抽象和实现,被 Controller 层调用,调用 Mapper 层的数据库操作。

1.3 ServiceImpl

作用:Service 接口的具体实现。
结构:继承或实现 Service 接口,使用 @Service 注解。
功能:实现 Service 层接口中定义的方法,处理具体的业务逻辑,调用 Mapper 层。

1.4 Mapper

作用:数据库操作的抽象。
结构:接口,使用 @Mapper 注解,通常结合 MyBatis 使用。
功能:定义对数据库的 CRUD 操作(创建、读取、更新、删除)。

1.5 Entity

作用:数据实体的抽象。
结构:Java 类,通常包含字段、getter/setter 方法、toString 方法等。
功能:代表数据库中的表,字段对应表的列,用于数据传输和映射。

1.6 Mapper.xml

作用:MyBatis 的映射文件,包含 SQL 语句。
结构:XML 文件,与 Mapper 接口的命名空间相对应。
功能:包含具体的 SQL 语句,与 Mapper 接口中的方法相对应,MyBatis 通过这个文件将方法调用映射到 SQL 执行。

2.各层之间的联系

2.1 Controller 与 Service

Controller 调用 Service 的接口方法来处理业务逻辑,Service 处理完毕后将结果返回给 Controller,Controller 再将结果响应给客户端。

2.2 Service 与 ServiceImpl

Service 是业务逻辑的接口,ServiceImpl 是 Service 接口的具体实现,ServiceImpl 实现了 Service 定义的所有方法。

2.3 Service 与 Mapper

Service 层通过调用 Mapper 层的接口方法来执行数据库操作,Mapper 层返回操作结果给 Service 层。

2.4 Mapper 与 Mapper.xml

Mapper 接口中定义的方法会映射到 Mapper.xml 中的 SQL 语句,MyBatis 框架负责将接口方法的调用转换为实际的 SQL 执行。

2.5 Service 与 Entity

Service 层在处理业务时,会使用 Entity 作为数据传输对象(DTO),将数据库的数据封装为 Entity 对象,或将 Entity 对象的数据持久化到数据库。

2.6 Controller 与 Entity

Controller 层接收来自客户端的数据,通常将这些数据封装到 Entity 对象中,然后传递给 Service 层处理;同样,Service 层处理完毕后,可以将 Entity 对象转换为响应数据发送给客户端。

3.框架图

在这里插入图片描述

4.总结

Spring Boot架构通过其分层设计,提供了一种清晰、模块化的代码组织方式,使得应用开发更加灵活和可维护。它简化了配置和部署流程,支持快速开发和微服务架构,同时整合了大量常用的开发组件,降低了项目搭建和维护的复杂性。此外,Spring Boot的自动配置、健康检查和监控功能,进一步提高了开发效率和应用的可观测性。

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

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

相关文章

【Spring Boot】关系映射开发(三):多对多映射

关系映射开发(三):多对多映射 1.创建实体1.1 创建 Student 实体1.2 创建 Teacher 实体 2.创建测试 在 多对多 关联关系中,只能通过 中间表 的方式进行映射,不能通过增加外键来实现。 注解 ManyToMany 用于关系的发出端…

【React Native优质开源项目】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

Nacos架构设计

Nacos1.X架构设计 Nacos2.X架构修改

Gitlab代码管理工具安装配置

前言: 没有真正的证书与域名建议使用httpip的方式在内网使用,不建议使用假的域名地址 一、安装前配置 #更改主机域名 hostnamectl set-hostname gitlab.dome.com bash #配置hosts 底部添加下面内容 vim /etc/hosts ############################ ip gi…

昇思25天学习打卡营第19天|Diffusion扩散模型

学AI还能赢奖品?每天30分钟,25天打通AI任督二脉 (qq.com) Diffusion扩散模型 本文基于Hugging Face:The Annotated Diffusion Model一文翻译迁移而来,同时参考了由浅入深了解Diffusion Model一文。 本教程在Jupyter Notebook上成…

【嵌入式DIY实例-ESP8266篇】-LCD ST7735显示BMP280传感器数据

LCD ST7735显示BMP280传感器数据 文章目录 LCD ST7735显示BMP280传感器数据1、硬件准备与接线2、代码实现本文介绍如何将 ESP8266 NodeMCU 板 (ESP-12E) 与 Bosch Sensortec 的 BMP280 气压和温度传感器连接。 NodeMCU 微控制器 (ESP8266EX) 从 BMP280 传感器读取温度和压力值,…

人工智能在病理组学虚拟染色中的应用|文献精析·24-07-07

小罗碎碎念 本期文献精析,分享的是一篇关于深度学习在虚拟染色技术中应用于组织学研究的综述。 角色姓名单位(中文)第一作者Leena Latonen东芬兰大学(QS-552)生物医学研究所通讯作者Pekka Ruusuvuori图尔库大学&#…

Raw Socket(一)实现TCP三次握手

实验环境: Windows物理机:192.168.1.4 WSL Ubuntu 20.04.6 LTS:172.19.32.196 Windows下的一个http服务器:HFS,大概长这个样子: 客户端就是Ubuntu,服务端就是这个…

2024年【危险化学品生产单位安全生产管理人员】考试总结及危险化学品生产单位安全生产管理人员考试试题

题库来源:安全生产模拟考试一点通公众号小程序 危险化学品生产单位安全生产管理人员考试总结是安全生产模拟考试一点通总题库中生成的一套危险化学品生产单位安全生产管理人员考试试题,安全生产模拟考试一点通上危险化学品生产单位安全生产管理人员作业…

6、Redis系统-数据结构-05-整数

五、整数集合(Intset) 整数集合是 Redis 中 Set 对象的底层实现之一。当一个 Set 对象只包含整数值元素,并且元素数量不大时,就会使用整数集合这个数据结构作为底层实现。整数集合通过紧凑的内存布局和升级机制,实现了…

保存在FinalShell服务器登录密码忘记了,如何快速获取到

一、从FinalShell获取服务器基本信息 如图操作会导出一个json文件,可以直接保存在桌面,或者其他位置 json格式如下: {"forwarding_auto_reconnect":false ,"custom_size":false ,"delete_time":0 ,"sec…

python读取指定文件夹下的图片(glob获取)

python读取指定文件夹下的图片(glob获取) 定义traverse_images函数,仅需要改变下根路径即可 glob是python中用来查找符合特定规则的文件路径名的函数 import os from glob import globdef traverse_images (folder_path):image_formats …

ComfyUI如何高效率使用多Lora

Efficient 工作流 {"last_node_id": 29,"last_link_id": 56,"nodes": [{"id": 26,"type": "LoRA Stacker","pos": [540,270],"size": {"0": 320,"1": 322},"flag…

增强安全防护,解读智慧校园系统的登录日志功能

在构建智慧校园系统时,登录日志功能扮演着不可或缺的角色,它不仅是系统安全的守护者,也是提升管理效率和确保合规性的有力工具。这一机制详细记录每次登录尝试的方方面面,涵盖了时间戳、用户身份、登录来源的IP地址乃至使用的设备…

python脚本“文档”撰写——“诱骗”ai撰写“火火的动态”python“自动”脚本文档

“火火的动态”python“自动”脚本文档,又从ai学习搭子那儿“套”来,可谓良心质量👍👍。 (笔记模板由python脚本于2024年07月07日 15:15:33创建,本篇笔记适合喜欢钻研python和页面源码的coder翻阅) 【学习的细节是欢悦…

Python遥感开发之批量对TIF数据合并

Python遥感开发之批量对TIF数据合并 1 原始数据展示2 按照年份合成春夏秋冬季节数据3 完整代码实现 前言:通常对遥感数据按照月和年或者季节进行分析,我们需要对我们下载的8天或者16天数据按照需求进行合并,对数据的合并一般可以采取均值法、…

移动校园(5):课程表数据获取及展示

首先写下静态页面,起初打算做成一周的课表,由于是以小程序的形式展现,所以显示一周的话会很拥挤,所以放弃下面的方案,改作一次显示一天 改后结果如下,后期还会进行外观优化 真正困难的部分是数据获取 大家大…

高德地图 key 和安全密钥使用

参考高德地图:JS API 安全密钥使用 高德地图 key 和安全密钥使用 一、通过明文方式设置参数查看如下成功后返回的信息 二、通过代理服务器转发实验:通过本地地址转发返回错的错误信息,如下通过正确的项目的的服务地址,返回正常参数…

Flink,spark对比

三:az 如何调度Spark、Flink,MR 任务 首先,使用java编写一个spark任务,定义一个类,它有main方法,里面写好逻辑,sparkConf 和JavaSparkContext 获取上下文,然后打成一个jar包&#xf…

深度学习之网络构建

目标 选择合适的神经网络 卷积神经网络(CNN):我们处理图片、视频一般选择CNN 循环神经网络(RNN):我们处理时序数据一般选择RNN 超参数的设置 为什么训练的模型的错误率居高不下 如何调测出最优的超参数 …