第七次作业:三层架构IOCDI和mybatis入门 一.复现案例改为三层架构二、撰写自己对三层架构耦合IOCDI这些概念的理解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容器启动预先实例化全部BeanEmpDaoA、EmpServiceA、EmpController 2. 容器自动识别Bean之间的依赖关系完成自动装配注入。 EmpController ←────自动注入────── EmpServiceA Autowired标注依赖 ↓ ←────自动注入──── EmpDaoA 个人理解 当一个类需要依赖其他组件时无需自身new创建依赖对象Spring容器会自动将已实例化完成的Bean注入到当前类。 类比Controller是员工Service是办公电脑员工不用自己采购电脑公司Spring容器提前备好直接分配分配的过程就是依赖注入。 整体逻辑串联总结 1. 三层架构规范代码分层结构划分每层职责为解耦提供代码组织基础 2. 低耦合分层面向接口编程削弱模块之间的强绑定 3. IOC控制反转核心设计思想将对象管理权交给容器摆脱手动new的高耦合模式 4. DI依赖注入实现IOC的技术手段容器自动装配各层依赖让分层解耦真正落地运行。三个人页面四mybatis入门