news 2026/2/15 11:29:00

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/2/15 4:09:29

GPEN云边协同方案?中心训练+边缘推理架构设计

GPEN云边协同方案?中心训练边缘推理架构设计 你有没有遇到过这样的问题:人像修复效果很好,但部署到实际业务中却卡在了算力和延迟上?比如客服系统需要实时处理用户上传的模糊头像,或者移动端App想集成高清人像增强功能…

作者头像 李华
网站建设 2026/2/9 7:45:39

音乐文件无法播放?这款工具让你的音频重获自由

音乐文件无法播放?这款工具让你的音频重获自由 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https://gitc…

作者头像 李华
网站建设 2026/2/14 14:31:47

零配置运行GPT-OSS 20B,gpt-oss-20b-WEBUI太省心

零配置运行GPT-OSS 20B,gpt-oss-20b-WEBUI太省心 1. 为什么说“零配置”不是夸张? 你有没有试过在本地跑一个20B参数的大模型? 以前的流程大概是:查显存够不够、装CUDA版本、编译llama.cpp、下载模型、量化、写启动脚本、配WebU…

作者头像 李华
网站建设 2026/2/3 19:45:57

Steam游戏DRM自动化处理工具技术指南

Steam游戏DRM自动化处理工具技术指南 【免费下载链接】Steam-auto-crack Steam Game Automatic Cracker 项目地址: https://gitcode.com/gh_mirrors/st/Steam-auto-crack 问题诊断:SteamDRM限制分析 核心观点摘要:DRM保护机制导致的兼容性与独立…

作者头像 李华
网站建设 2026/2/3 15:22:43

Obsidian效率提升指南:三步打造个性化工作流

Obsidian效率提升指南:三步打造个性化工作流 【免费下载链接】obsidian-minimal A distraction-free and highly customizable theme for Obsidian. 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-minimal 笔记系统优化和界面定制是提升信息处理效率…

作者头像 李华