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

第七次作业:三层架构IOCDI和mybatis入门

一.复现案例(改为三层架构)

二、撰写自己对三层架构,耦合,IOC,DI,这些概念的理解

1. 分层数据流简图

前端浏览器发起请求 ↓ ┌─────────────────────────────────────────────┐ │ Controller 控制层(接待层) │ │ EmpController │ │ 职责:接收请求、参数校验、统一返回结果 │ └───────────────────┬─────────────────────────┘ ↓ 调用业务接口 ┌─────────────────────────────────────────────┐ │ Service 业务层(逻辑处理层) │ │ EmpService接口 + EmpServiceA/B实现类 │ │ 职责:封装业务规则、数据判断、业务流程逻辑 │ └───────────────────┬─────────────────────────┘ ↓ 调用数据接口 ┌─────────────────────────────────────────────┐ │ DAO 数据访问层(仓库层) │ │ EmpDao接口 + EmpDaoA/B实现类 │ │ 职责:仅负责数据库增删改查操作 │ └───────────────────┬─────────────────────────┘ ↓ MySQL数据库
个人理解 三层架构是后端标准化分层规范,遵循单一职责原则: - 控制层:只对接前端,不处理业务、不操作数据库; - 业务层:承载项目核心业务逻辑,衔接上层请求与下层数据; - 数据层:仅负责数据库交互,无业务判断代码。 分层优势:修改某一层逻辑不会影响其他层级,便于维护、扩展、单元测试。 2. 耦合 耦合描述不同代码模块之间的依赖绑定强度,分为高耦合、低耦合。 2.1 高耦合(反面示例,手动new对象) EmpController ↓ 硬编码 new EmpServiceA() EmpServiceA ↓ 硬编码 new EmpDaoA() EmpDaoA 问题:上层代码直接绑定底层具体实现,切换业务实现类时,所有上层调用代码都要修改,维护成本高。 2.2 低耦合(推荐方案,面向接口编程) EmpController ↓ 仅依赖 EmpService 抽象接口 ┌──────────┴──────────┐ EmpServiceA EmpServiceB ↓ 二者均依赖 EmpDao 抽象接口 ┌──────────┴──────────┐ EmpDaoA EmpDaoB 总结 分层架构+面向接口编程,核心目的就是降低耦合;模块只依赖抽象接口,底层实现可随意替换,无需改动上层代码。
3. IOC 控制反转(Inversion of Control) 传统正向控制(无IOC) 开发者手动通过`new`创建、管理全部对象: `EmpController → new EmpServiceA → new EmpDaoA` 对象创建、依赖装配、生命周期全部由业务代码掌控,耦合严重。 IOC模式(Spring容器接管对象) Spring IOC容器(对象工厂) ┌─────────┬──────────┬─────────┐ Controller Bean Service Bean DAO Bean │ │ │ └──────────┴──────────┘ 容器统一完成:创建对象、缓存对象、销毁对象、管理依赖关系 个人理解 IOC是一种设计思想:将对象创建、依赖管理的控制权,从业务代码反转交给Spring容器。 不再手动实例化对象,由容器统一管理项目中所有组件Bean,从根源解决手动`new`带来的高耦合问题。
4. DI 依赖注入(Dependency Injection) 与IOC的关系 IOC是宏观设计思想,DI是落地IOC的核心实现技术,没有依赖注入,控制反转无法落地。 依赖注入流程 1. Spring容器启动,预先实例化全部Bean:`EmpDaoA`、`EmpServiceA`、`EmpController`; 2. 容器自动识别Bean之间的依赖关系,完成自动装配注入。 EmpController ←────自动注入────── EmpServiceA (@Autowired标注依赖) ↓ ←────自动注入──── EmpDaoA 个人理解 当一个类需要依赖其他组件时,无需自身`new`创建依赖对象,Spring容器会自动将已实例化完成的Bean注入到当前类。 类比:Controller是员工,Service是办公电脑;员工不用自己采购电脑,公司(Spring容器)提前备好直接分配,分配的过程就是依赖注入。 整体逻辑串联总结 1. 三层架构:规范代码分层结构,划分每层职责,为解耦提供代码组织基础; 2. 低耦合:分层+面向接口编程,削弱模块之间的强绑定; 3. IOC控制反转:核心设计思想,将对象管理权交给容器,摆脱手动`new`的高耦合模式; 4. DI依赖注入:实现IOC的技术手段,容器自动装配各层依赖,让分层解耦真正落地运行。

三,个人页面

四,mybatis入门

http://www.jsqmd.com/news/1072718/

相关文章:

  • TVA在机电产品视觉检测的创新应用(11)
  • 影刀RPA新手速成:7天从零到独立开发自动化流程
  • 无人机三模态视觉融合:RGB、热成像与事件相机的全天候感知方案
  • 告别AI幻觉!WHartTest PE版7大核心升级,让智能测试更懂你
  • 最便宜稳定 GPT5.5 大模型中转平台
  • 手游 BGP 边缘分发部署实战:三网联机延迟优化与 UDP 异常流量过滤配置方案
  • 2026年6月适合个体户的5大微信小程序制作工具
  • 2 建立连接
  • LIVE项目解析:基于图像先验与时间一致性的AI视频编辑技术
  • 高股息投资笔记-股票的人性2
  • MacBook的实用小技巧
  • 华为OD机试真题-预测新能源发电量(C/C++/Py/Java/Js/Go)
  • 企业低价使用 GPT5.5 API 解决方案
  • 量子计算与分子模拟在药物设计中的革命性突破
  • 自动驾驶高清地图向量化实验中的常见评价指标解析
  • 极小超曲面与Yau猜想:对称流形中的无限存在性定理
  • 2026新能源下乡155款车型全拆解:从625亿国补到铁锂涨价,全产业链机会地图
  • 知名做PE自封袋的厂家
  • 基于 Harmony 7.0 应用的信用卡管理应用首页实现
  • 研发与业务协同工具怎么选?2026 主流团队云存储架构深度横评与避坑指南
  • [崛起]大国纪录片系列合集
  • AI如何从视频中学习物理规律:从视觉真实到物理有效的跨越
  • 东南亚多人手游区域 CDN 调优实战:新加坡、曼谷本地边缘节点降低联机延迟、过滤 UDP 异常流量
  • 基于参考感知比较建模的AIGC视频质量评估方法(RefVQA)详解
  • 状态 / 类型定义 策略模式 统一返回码
  • Vite vs Webpack 深度对比:从启动原理到生产构建,一篇就够了
  • 视觉语言模型中的熵梯度证据定位技术解析
  • VLCKit字幕设置与字体调整的实践
  • 4.从数字电路视角吃透 PLC:扫描周期原理 + Codesys ST 电机正反转完整工程
  • Carleman线性化在流体动力学模拟中的应用与优化