引言
在完成 Spring MVC 基础功能的开发练习后,我们发现了一个亟待解决的问题:即便只是实现了少量核心功能,项目代码已呈现出混乱的状态;若后续完成全量业务功能的开发,代码体系(包括文件结构与代码内容)将会陷入更严重的无序状态。因此,接下来我们学习应用分层。
MVC 与三层架构
阿里开发手册中,关于工程结构部分,定义了常见工程的应用分层结构:

那么什么是应用分层呢?
应用分层
应用分层是一种软件开发设计思想,它将应用程序分成 N 个层次,这 N 个层次分别负责各自的职责,多个层次之间协同提供完整的功能。根据项目的复杂度,可把项目分成三层、四层或者更多层。
常见的 MVC 设计模式,就是应用分层的一种具体体现。
为什么需要应用分层?
在最开始的时候,为了让项目快速上线,我们通常是不考虑分层的。但是随着业务越来越复杂,大量的代码混在一起,会出现逻辑不清晰、各模块相互依赖、代码扩展性差、改动一处就牵一发而动全身等问题。所以学习对项目进行分层就是我们程序员的必修课了。
如何分层(三层架构)
咱们上一节中学习的'MVC',就是把整体的系统分成了 Model(模型)、View(视图)和 Controller(控制器)三个层次,也就是将用户视图和业务处理隔离开,并且通过控制器连接起来,很好地实现了表现和逻辑的解耦,是一种标准的软件分层架构。

目前更主流的开发方式是'前后端分离'的方式,后端开发工程师不再需要关注前端的实现,所以对于 Java 后端开发者,又有了一种新的分层架构:把整体架构分为表现层、业务逻辑层和数据层。这种分层方式也称之为'三层架构'。
- 表现层:就是展示数据结果和接受用户指令的,是最靠近用户的一层;
- 业务逻辑层:负责处理业务逻辑,里面有复杂业务的具体实现;
- 数据层:负责存储和管理与应用程序相关的数据。
可以看到,咱们前面的代码,并不符合这种设计思想,而是所有的代码堆砌在一起。

按照上面的层次划分,Spring MVC 站在后端开发人员的角度上,也进行了支持,把上面的代码划分为三个部分:
请求处理、响应数据:负责接收页面的请求,给页面响应数据。
逻辑处理:负责业务逻辑处理的代码。
数据访问:负责业务数据的维护操作,包括增、删、改、查等操作。
这三个部分,在 Spring 的实现中,均有体现:

Controller:控制层。接收前端发送的请求,对请求进行处理,并响应数据。
Service:业务逻辑层。处理具体的业务逻辑。
Dao:数据访问层,也称为持久层。负责数据访问操作,包括数据的增、删、改、查。







