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 + " 记到报名本!"); } }
为什么要分四层?就像班级分工一样!
-
各司其职:
- 门卫不用管怎么记名字,班长不用去开柜子,大家只做自己擅长的事。
-
方便修改:
- 如果换一个“图书管理员”(比如从本子换成电脑记录),只要改
DAO
层,其他小组不用动。
- 如果换一个“图书管理员”(比如从本子换成电脑记录),只要改
-
容易测试:
- 可以单独检查“劳动委员”的代码对不对,不用管门卫和图书管理员。
-
避免混乱:
- 如果所有代码都写在一起,就像全班挤在门口收报名表,会乱成一团!
实际项目中的四层结构:
textCopy Code
src/ ├── controller/ (门卫小组)
├── service/ (班长计划书)
├── service/impl/ (劳动委员干活)
└── dao/ (图书管理员)