news 2026/5/1 7:34:50

java开发的三层架构

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
java开发的三层架构

三层架构

三层架构把程序分成三部分,各司其职,便于维护与扩展:
Controller(控制层 / 接口层)→ Service(业务层)→ Mapper/DAO(持久层)


概览

  • 目标:每层只做一类事,职责单一,降低耦合。
  • 好处:易维护、易测试、易扩展、便于多人协作。

Controller(控制层 / 接口层)

前台接待与传话筒。

主要职责

  • 接收请求(URL、Headers、Body、参数)。
  • 做入参校验(是否缺失、格式是否合法、简单鉴权)。
  • 调用 Service,传递必要参数。
  • 封装 Service 返回值为响应格式(JSON/HTTP status),返回给前端。

不该做

  • 不实现复杂业务逻辑。
  • 不写 SQL、不直接访问数据库。

原则

  • 薄控制层:只做协调与验证,保持简单易读。

Service(业务层)

业务逻辑的大脑。

主要职责

  • 实现业务规则(权限判断、折扣规则、状态机、事务编排等)。
  • 组织调用多个 Mapper 或第三方服务,串联业务流程。
  • 处理事务边界(开启/提交/回滚)。
  • 返回业务结果给 Controller。

不该做

  • 不直接操作 SQL 或处理请求/响应的细节(HTTP、序列化等)。

原则

  • 业务集中化、可复用、可单元测试。尽量纯粹(无 UI/协议依赖)。

Mapper / DAO(持久层)

数据库搬运工与翻译官。

主要职责

  • 执行 SQL(查询/插入/更新/删除)。
  • 将数据库记录映射为实体对象(Entity/POJO),或将对象转换为 SQL 参数。
  • 提供基础的增删改查接口给 Service 使用。

不该做

  • 不处理复杂业务规则、不做跨表业务决策。

原则

  • 单一职责:只关心数据持久化与映射,保持稳定、可替换(例如切换 ORM 或数据库)。

请求/数据流(简明)

前端请求 ↓ Controller(校验、解析) ↓ Service(业务逻辑、事务、调用多个 Mapper) ↓ Mapper/DAO(执行 SQL、返回实体) ↓ Service(整合结果) ↓ Controller(封装为 JSON) ↓ 前端收到响应

快速对照表

主要角色做什么不做
Controller接口/路由接收请求、校验、转交、响应写业务、写 SQL
Service业务逻辑核心逻辑、流程编排、事务直接操作数据库、处理 HTTP 细节
Mapper/DAO持久化执行 SQL、对象映射写业务规则、处理事务决策

常见示例流程(订单更新)

  1. 前端发来更新订单请求(/orders/123/update)。
  2. Controller 校验 token、校验参数是否完整。
  3. Controller 调用OrderService.updateOrder(userId, orderDto)
  4. Service 检查用户权限、校验订单状态、开始事务。
  5. Service 调用OrderMapper.selectById(123)InventoryMapper.decrease(...)等。
  6. Mapper 执行 SQL 并返回实体。
  7. Service 整合结果,提交事务,返回业务结果。
  8. Controller 将结果封装为 JSON 并返回前端。

结论

三层架构让“接待(Controller)→ 决策(Service)→ 搬运(Mapper)”各自专注,系统更清晰、可维护、可测试。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 7:31:29

音频解密工具全解析:从加密原理到无损转换实践指南

音频解密工具全解析:从加密原理到无损转换实践指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https://…

作者头像 李华
网站建设 2026/4/23 12:55:56

【3大突破】让你的游戏效率提升200%的智能辅助系统

【3大突破】让你的游戏效率提升200%的智能辅助系统 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否也曾在激烈的游戏对局中…

作者头像 李华
网站建设 2026/4/18 10:56:33

Qwen2.5-0.5B如何评估推理成本?资源消耗计算方法

Qwen2.5-0.5B如何评估推理成本?资源消耗计算方法 1. 为什么小模型也需要认真算“账”? 很多人看到“0.5B”这个参数量,第一反应是:这么小的模型,还用得着评估成本?CPU跑起来不就跟开个网页一样轻松&#…

作者头像 李华
网站建设 2026/4/18 9:26:17

python-django医院医疗设备维修管理系统vue3

目录系统概述技术栈核心功能扩展功能优势项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作系统概述 Python-Django与Vue3结合的医院医疗设备维修管理系统,旨在通过现代化技术提升医疗设备维修流…

作者头像 李华
网站建设 2026/4/23 12:08:53

YOLO11标注格式转换:VOC转YOLO实战教程

YOLO11标注格式转换:VOC转YOLO实战教程 你手头有一批用VOC格式标注的数据集,想直接用在YOLO11上训练?别急着重标——VOC和YOLO的标注逻辑完全不同,但转换其实非常简单,几分钟就能搞定。这篇教程不讲理论、不堆参数&am…

作者头像 李华