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

第七次作业:三层架构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入门