当前位置: 首页 > news >正文

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)”各自专注,系统更清晰、可维护、可测试。

http://www.cnnetsun.cn/news/785789.html

相关文章:

  • 7个技巧掌握AI语音识别字幕工具:多语言字幕生成与翻译全解析
  • B站字幕提取神器使用指南:从小白到高手的进阶之路
  • 如何让Typora效率倍增?3个插件功能让你彻底告别文档管理痛点
  • 高速信号回流路径设计要点:pcb布线规则设计通俗解释
  • BERT语义填空服务上线实操:WebUI集成与API调用完整指南
  • 基于永磁同步电机矢量控制simulink仿真
  • 音乐解密工具技术解析:从加密困境到跨平台音频解决方案
  • 为什么用Qwen3-14B做翻译?119语种互译实战评测
  • Midjourney替代方案对比:Z-Image-Turbo开源部署成本实战评测
  • 语音标注前处理:FSMN-VAD辅助标注效率提升实战
  • Qwen3-Embedding-4B配置中心:动态参数调整实战
  • 高效获取B站字幕的实用技巧:3步轻松搞定视频字幕提取
  • 掌握工作流引擎:企业级应用从入门到实战的完整指南
  • 燃油车底盘落伍了?错了,燃油车底盘技术对电车来说更重要了
  • 浏览器Markdown预览工具完全指南:从基础配置到专业应用
  • 网易云音乐解锁工具使用教程:突破地区限制的免费音乐解锁方案
  • 解决macOS证书信任难题:res-downloader全场景配置指南
  • 如何使用游戏辅助工具提升英雄联盟游戏效率
  • 局域网共享使用:团队协作语音转写的部署方法
  • Windows HEIC支持完全攻略:从格式障碍到系统级预览的无缝过渡
  • 音乐格式受限?这款音频格式转换工具让你的音乐文件重获自由
  • TurboDiffusion显存占用高?双模型切换边界调整优化教程
  • ProxyPin全平台网络流量捕获工具使用指南
  • 如何用图片批量处理工具解决日常办公与社交平台的图片处理难题:新手教程与效率工具全攻略
  • 5分钟打造Windows HEIC文件终极预览方案:让苹果照片完美融入PC生态
  • Qwen3-Embedding-4B内存泄漏?长时间运行稳定性优化案例
  • 零成本体验macOS:PC设备安装黑苹果完整指南
  • 5个维度打造专属散热方案:电脑风扇智能调节全攻略
  • 为什么麦橘超然部署总失败?float8加载问题解决教程
  • KCN-GenshinServer:零基础搭建原神私人服务器的一站式解决方案 | 玩家与开发者必备