后端三层架构
一、三层架构概述
三层架构是一种经典且通用的后端应用程序组织方式,它将应用程序的业务逻辑划分为三个具有明确职责的层次结构。
适用场景:无论是传统的单体Web项目,还是现代主流的前后端分离项目,三层架构都被广泛采用。
核心目的:当用户请求到达后端时,会依次经过这三个层次的处理,最终返回相应的结果。
这种架构模式通过清晰的职责分离,有效管理了应用程序的复杂性,为构建可维护、可扩展的后端系统奠定了坚实基础。
二、各层次的具体职责
三层架构由控制层、业务层和持久层组成,各层职责明确,相互协作。
| 层级 | 别名 | 英文名 | 核心职责说明 |
|---|---|---|---|
| 1. 控制层 | Web层 | Controller | 1. 接收前端请求(支持POST、GET、PUT、DELETE等方法) 2. 调用业务层方法处理具体业务 3. 将处理结果(数据或视图)返回给前端 类比:公司的前台接待员,负责对外沟通 |
| 2. 业务层 | 服务层 | Service | 1. 处理核心业务逻辑(如订单金额计算、用户权限验证等) 2. 协调调用持久层方法 3. 严格禁止直接操作数据库 类比:公司的部门经理,负责具体业务流程管理 |
| 3. 持久层 | 数据访问层 | Mapper / DAO | 1. 直接与数据库交互 2. 负责数据的增删改查(CRUD)操作 类比:公司的仓库管理员,专门负责货物存取 |
数据流转示例:
请求方向:前端 → Controller → Service → Mapper → 数据库
响应方向:数据库 → Mapper → Service → Controller → 前端
三、三层架构的优势价值
1. 职责清晰(单一职责原则)
每一层专注于特定职责:Controller负责请求响应,Service处理业务逻辑,Mapper管理数据访问。这种明确的分工确保了各司其职,互不干扰。
2. 便于开发和测试
协同开发:支持团队成员并行工作,前端、业务逻辑和数据库操作可由不同开发者负责
测试便利:支持分层单元测试,例如可以通过Mock Service来独立测试Controller
3. 代码可维护性高
清晰的结构使得代码易于理解和维护。当需要修改时,开发者能够快速定位到相应层次,有效避免"牵一发而动全身"的问题。
4. 系统解耦
层次间通过接口进行调用,显著降低了耦合度。例如,在更换数据库或持久层框架时,只需调整Mapper层的实现,而Service层代码基本不受影响。
四、项目中的具体实现
在实际项目中,三层架构通常通过包结构来体现:
标准包结构:
controller:控制层实现service:业务层实现mapper:持久层实现
类命名规范:
XxxController(如UserController)XxxService(如UserService)XxxMapper(如UserMapper)
这种规范化的组织结构使得项目层次清晰,便于团队协作和后续维护。
五、持久层框架选择
直接使用原生JDBC编写SQL语句较为繁琐。为了提升开发效率,通常采用成熟的持久层框架:
主流框架对比:
MyBatis:半自动化框架,需要手动编写SQL,灵活性极高
MyBatis-Plus:在MyBatis基础上增强的国产框架,功能更加丰富
JPA:Java持久化API规范,Hibernate是其最著名的实现
推荐选择:MyBatis-Plus
该框架兼具MyBatis和JPA的优点:
支持自由编写复杂SQL,满足个性化需求
提供通用CRUD方法,简单操作无需编写SQL
极大提升开发效率,同时保持足够的灵活性
总结
三层架构通过分治思想有效管理了软件复杂性,是构建可维护、可扩展后端应用的基石。其清晰的层次划分、明确的职责分离以及良好的解耦特性,使其成为现代软件开发中不可或缺的架构模式。掌握三层架构不仅有助于编写高质量的代码,更能为应对未来业务变化和技术演进提供坚实保障。
