news 2026/6/24 12:27:56

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第七次作业:三层架构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入门

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/24 12:24:44

2026年LLM API智能路由:多模型网关的工程选型与实战

背景:为什么需要多模型网关 2026年,主流 LLM API 已呈现明显的"三足鼎立国产崛起"格局:GLM-5、GPT-5、Claude 4.5、Gemini 3 各自在不同任务类型上有显著的成本-质量-延迟差异。单一模型依赖已成为工程反模式——一旦供应商限流、涨…

作者头像 李华
网站建设 2026/6/24 12:21:30

Spring Boot与Flowable的完美集成:BPMN文件的部署与定位

在Spring Boot应用中集成工作流引擎Flowable是一个非常常见的需求,尤其是对于那些需要业务流程管理(BPM)的项目来说。升级到Spring Boot 3.1.3和Java 17的同时,确保Flowable 7.0.0版本的正确部署,是一个关键的步骤。本文将通过实例展示如何解决在升级过程中遇到的BPMN文件…

作者头像 李华
网站建设 2026/6/24 12:12:50

基于强化学习的AI心理助手:安全架构与策略优化实践

1. 项目概述:当AI遇见心理疗愈 最近几年,AI在垂直领域的应用越来越深入,从写代码到画图,再到辅助决策。但当我看到“基于强化学习的认知行为疗法AI助手”这个标题时,依然感到一阵兴奋和挑战。这不仅仅是一个技术项目&a…

作者头像 李华
网站建设 2026/6/24 12:05:37

基于Stackelberg博弈与可排空性护栏的GPU云平台定价与扩缩容策略

1. 项目概述:当GPU成为“硬通货”,平台如何优雅地“分蛋糕”与“调产能”?最近几年,但凡和AI沾边的项目,GPU资源就成了最紧俏的“硬通货”。无论是训练大模型、做AIGC应用,还是搞自动驾驶仿真,背…

作者头像 李华
网站建设 2026/6/24 12:01:06

PIMI项目:用伊辛机硬件加速5G MIMO信号检测,突破能效瓶颈

1. 项目概述:当伊辛机遇上5G MIMO在无线通信领域,特别是5G及未来的6G系统中,大规模多输入多输出(MIMO)技术是提升频谱效率和系统容量的核心。然而,其带来的计算复杂度也呈指数级增长,尤其是在信…

作者头像 李华
网站建设 2026/6/24 11:57:27

DMXAPI:办公场景多模态语义理解中间件

1. 语音日程协调不是“听个指令就排个会”,而是多模态认知闭环的起点“把语音日程协调做进智能办公流之后,我为什么又把_DMXAPI_放进方案里”——这个标题里藏着一个被多数人忽略的关键转折:语音日程协调本身只是表层功能,真正卡住…

作者头像 李华