news 2026/3/28 1:04:27

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/3/27 2:36:21

Windows系统res-downloader证书配置完全指南:从失败到成功的实战手册

Windows系统res-downloader证书配置完全指南:从失败到成功的实战手册 【免费下载链接】res-downloader 资源下载器、网络资源嗅探,支持微信视频号下载、网页抖音无水印下载、网页快手无水印视频下载、酷狗音乐下载等网络资源拦截下载! 项目地址: https…

作者头像 李华
网站建设 2026/3/27 9:42:47

一句话搞定复杂操作:Open-AutoGLM真实体验分享

一句话搞定复杂操作:Open-AutoGLM真实体验分享 1. 这不是语音助手,是能“看见”并“动手”的手机AI助理 你有没有过这样的时刻: 想在小红书搜“上海周末咖啡馆推荐”,却要先解锁手机、点开App、等加载、输入关键词、再翻三页找图…

作者头像 李华
网站建设 2026/3/27 10:57:40

PyTorch通用镜像在H800服务器上的性能实测报告

PyTorch通用镜像在H800服务器上的性能实测报告 1. 实测背景与环境说明 最近在H800服务器上部署深度学习任务时,我们选用了PyTorch-2.x-Universal-Dev-v1.0镜像作为基础开发环境。这款镜像标称“开箱即用”,但实际工程中,光看文档描述远远不…

作者头像 李华
网站建设 2026/3/27 7:40:34

LyricsX高效使用全攻略:从基础配置到高级技巧

LyricsX高效使用全攻略:从基础配置到高级技巧 【免费下载链接】Lyrics Swift-based iTunes plug-in to display lyrics on the desktop. 项目地址: https://gitcode.com/gh_mirrors/lyr/Lyrics 核心功能解析 如何实现歌词与音乐的精准同步? Lyr…

作者头像 李华
网站建设 2026/3/28 1:23:23

Qwen2.5-0.5B输出乱码?编码格式问题排查指南

Qwen2.5-0.5B输出乱码?编码格式问题排查指南 1. 为什么你的Qwen2.5-0.5B会输出乱码? 你刚启动了那个轻巧又快的Qwen2.5-0.5B-Instruct镜像,输入“你好”,结果屏幕上蹦出一串看不懂的字符: 、¡—¢˜&#x…

作者头像 李华
网站建设 2026/3/27 1:09:25

Hackintool黑苹果配置工具:解决硬件适配与系统优化的实用指南

Hackintool黑苹果配置工具:解决硬件适配与系统优化的实用指南 【免费下载链接】Hackintool The Swiss army knife of vanilla Hackintoshing 项目地址: https://gitcode.com/gh_mirrors/ha/Hackintool Hackintool是一款专为黑苹果用户设计的硬件配置与系统优…

作者头像 李华