当前位置: 首页 > article >正文

springboot 四层架构之间的关系整理笔记二

Spring Boot 的四层架构就像班级里的 ‌4 个小组‌,分工合作完成一个大任务!(比如组织一场运动会)


1. 控制层(Controller)—— 像「传达室门卫」
  • 做什么‌:专门和“外面的人”说话,比如同学要报名运动会,门卫负责收报名表,然后把结果告诉同学。
  • 例子‌:

    @RestController public class SportsController {

  • @Autowired

  • private SportsService sportsService; // 找班长帮忙 // 处理同学的报名请求

  • @PostMapping("/signup")

  • public String signUp(String name) {

  • return sportsService.addStudent(name); // 让班长处理 } }


2. Service 层(接口)—— 像「班长写的计划书」
  • 做什么‌:班长先写一个计划,比如“报名流程分三步”,但具体怎么做交给其他同学。
  • 例子‌:
     

    public interface SportsService

  • { String addStudent(String name); // 班长说:“报名要有这个方法!” }


3. ServiceImpl 层(实现类)—— 像「劳动委员按计划干活」
  • 做什么‌:劳动委员按照班长的计划书,实际去操作(比如检查名字、记到本子上)。
  • 例子‌:

    @Service

  • public class SportsServiceImpl implements SportsService {

  • @Autowired

  • private StudentDao studentDao; // 找图书管理员帮忙

  • @Override public String addStudent(String name) {

  • if (name != null) { studentDao.save(name); // 让图书管理员存名字 return "报名成功!";

  • } return "名字不能为空!"; } }


4. DAO/Repository 层 —— 像「图书管理员」
  • 做什么‌:只负责管班级的“小仓库”(比如记名字的本子、装奖品的柜子)。
  • 例子‌:
     

    @Repository public class StudentDao { // 假装这里连接了数据库,实际是把名字存到本子上 public void save(String name) { System.out.println("把 " + name + " 记到报名本!"); } }


为什么要分四层?就像班级分工一样!

  1. 各司其职‌:

    • 门卫不用管怎么记名字,班长不用去开柜子,大家只做自己擅长的事。
  2. 方便修改‌:

    • 如果换一个“图书管理员”(比如从本子换成电脑记录),只要改 DAO 层,其他小组不用动。
  3. 容易测试‌:

    • 可以单独检查“劳动委员”的代码对不对,不用管门卫和图书管理员。
  4. 避免混乱‌:

    • 如果所有代码都写在一起,就像全班挤在门口收报名表,会乱成一团!

实际项目中的四层结构:

 

textCopy Code

src/ ├── controller/ (门卫小组)

   ├── service/ (班长计划书)

   ├── service/impl/ (劳动委员干活)

   └── dao/ (图书管理员)


http://www.kler.cn/a/613008.html

相关文章:

  • 【CSS3】02-选择器 + CSS特性 + 背景属性 + 显示模式
  • 硬件老化测试方案的设计误区
  • sock文件介绍--以mysql.sock为例
  • torchvision中数据集的使用
  • 基于神经网络的文本分类的设计与实现
  • 告别代码Bug,GDB调试工具详解
  • 使用Selenium和lxml库搜房网爬取某地区房屋信息(python、pycharm爬虫)
  • 某投行日志记录解决方案二之日志异步落盘: 自定义注解+反射+AOP+异步多线程,实现高并发场景下的统一日志治理方案
  • 94二叉树中序遍历解题记录
  • SpringCloud-环境和工程搭建
  • 基于SpringBoot + Vue 的考勤管理系统
  • 浅谈数据结构
  • CSS FLEX布局
  • 解决 “Cannot read SQL script from class path resource [sql/XX.sql]“ 错误
  • 【科研绘图系列】R语言绘制重点物种进化树图(taxa phylogenetic tree)
  • 微服务面试题:配置中心
  • 基于大模型的自发性气胸全方位预测与诊疗方案研究
  • 合合信息TextIn大模型加速器 2.0来了:智能文档解析和图表解析能力全面升级
  • Spring Boot 3虚拟线程的使用
  • 【计算机操作系统】线程的概念和特点