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

Spring 框架: IOC、DI、AOP 三大核心

Spring 框架凭借其轻量级、解耦、可扩展的特性,占据了 Java EE 开发的半壁江山。
但其实Spring 的核心逻辑并不复杂,抓住IOC 控制反转、DI 依赖注入、AOP 面向切面编程这三个关键点,就能轻松搞懂Spring架构

一、为什么需要 Spring 框架?

在没有 Spring 的年代,我们开发 Java Web 项目时,会面临一个致命问题:对象之间的依赖关系过于紧密,代码耦合度极高。

而 Spring 框架的出现,就是为了解决这些问题,它的核心价值就是解耦、复用、简化开发,而实现这些价值的核心,就是我们今天要讲的 IOC、DI、AOP。

二、IOC 控制反转:对象创建权的 “交权”

IOC(Inversion of Control,控制反转)是一种设计思想,而非具体实现。它的核心逻辑是:将对象的创建、管理、依赖关系的维护,从程序员手动控制 “反转” 给 Spring 容器来统一负责。
而Spring IOC 容器,是 IOC 设计思想的具体实现
2.1 如何将类纳入 IOC 容器?
Spring 提供了一系列注解,让我们可以轻松将类标记为 “需要被 IOC 容器管理的 Bean”,最核心的就是@Component 及其三个衍生注解:

@Component:通用注解,可标记任意类为 Spring Bean;
@Controller:衍生自@Component,专门标记控制层(Controller) 类(;
@Service:衍生自@Component,专门标记业务层(Service) 类;
@Repository:衍生自@Component,专门标记数据访问层(Mapper/DAO)。

Bean 的默认名称规则:
Spring IOC 容器底层用类似 “键值对” 的结构存储 Bean,默认的 Bean 名称(即键)是类名首字母小写(如UserServiceImpl → userServiceImpl)。

MyBatis 的 @Mapper 注解:
我们在实际开发中,数据访问层通常使用 MyBatis,此时会用@Mapper注解标记 Mapper 接口,而非@Repository。

注意:@Mapper是 MyBatis 提供的注解,并非 Spring 原生注解,仅加@Mapper无法让 Spring 扫描到该接口,还需要在 Spring 启动类上添加
@MapperScan("com.xxx.mapper"),指定 Mapper 接口所在包路径,Spring 才能通过 MyBatis 的动态代理生成接口实现类,并将其注册到 IOC 容器中。

2.2 IOC 的核心价值
通过 IOC 容器,我们无需再手动new对象,彻底摆脱了对象之间的紧密耦合,实现了
“松耦合、可维护、可扩展” 的开发模式。

三、DI 依赖注入:从 IOC 容器中 “拿对象”

3.1 什么是 DI?
DI(Dependency Injection,依赖注入) 是IOC 设计思想的另一种体现形式,它和 IOC 是 “一体两面” 的关系:
IOC 是 “存对象”:Spring 容器负责创建、存储 Bean;
DI 是 “取对象”:当一个 Bean 需要依赖另一个 Bean 时,Spring 容器自动将被依赖的 Bean 注入到当前 Bean 中,无需程序员手动获取。
3.2 如何实现 DI 依赖注入?
Spring 提供了多种依赖注入的方式,其中最常用的是注解注入,核心注解是@Autowired。
3.3 DI 的核心价值
DI 让 Bean 之间的依赖关系由 Spring 容器统一维护,程序员无需关心对象的获取过程,进一步降低了代码耦合度,提高了开发效率和代码的可维护性

四、AOP 面向切面编程

4.1 什么是 AOP?
AOP(Aspect Oriented Programming,面向切面编程)是一种面向对象编程(OOP)的补充和扩展,。
通俗点说:核心业务方法(如 “用户注册”“订单创建”)是 “主角”,公共横切逻辑(如 “日志记录”“事务管理”“权限校验”)是 “配角”,AOP 就是让 “配角” 独立于 “主角” 存在,且能重复参与多个 “演出”,而无需在每个 “主角” 的剧本中重复编写 “配角” 的台词。相当于三明治中间的馅料,可以更换。
4.2 AOP 的核心价值
AOP 将公共横切逻辑与核心业务逻辑分离,实现了公共逻辑的复用,减少了代码冗余,提高了代码的可维护性和可扩展性,同时也让开发人员可以更专注于核心业务逻辑的实现。

五、总结:Spring 三大核心的关系与价值

Spring 框架的IOC、DI、AOP 三大核心,并非孤立存在,而是相互配合、相辅相成的:
IOC 是基础:负责创建、管理 Bean,为 DI 和 AOP 提供支撑;
DI 是 IOC 的补充:负责将 Bean 注入到需要依赖它的 Bean 中,实现 Bean 之间的解耦;
AOP 是对 IOC/DI 的扩展:基于 IOC 容器中的 Bean,实现公共横切逻辑的复用,进一步降低代码耦合度。
三者共同实现了 Spring 框架的轻量级、解耦、可复用、可扩展的核心价值,让 Java 后端开发变得更高效、更规范、更易于维护。

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

相关文章:

  • 运行报表:支撑IT外包公司为客户交付全栈网络报表分析方案
  • 季度管理升级:助力设备商为客户交付季度协同管理升级方案
  • aiohttp+asyncio 实现高并发异步爬虫
  • Thinkphp和Laravel+办公管理系统_
  • HTML元素+网页布局区块概念汇总表
  • Thinkphp和Laravel儿童性教育新闻文章论坛网站_
  • matlab simulink 使用ros2 的sub和pub需要注意的事项,以及部署事项(注意事项)
  • 人工智能数据分析科学家:20个月系统培养大纲 (1.0版)【20260128】002篇
  • 热销榜单:2026年抗菌抗病毒无纺布供应商推荐
  • Excel CHOOSE函数全攻略:从基础选择到高级数据重组的全能工具
  • Excel INDIRECT函数深度解析:动态引用的终极武器
  • 04基于观测器的线性多智能体事件触发一致性
  • Reddit营销:如何在Reddit写出“像用户一样”的营销贴?、
  • SQL 注入已死?WAF 绕过实战:我是如何攻破这个“固若金汤”的防火墙的
  • AIGC设计:内容生成与场景落地的核心方法与实践指南
  • AI绘图:快速出好图的核心技巧与常见误区
  • 2026毕设ssm+vue旅游分享平台论文+程序
  • 2026毕设ssm+vue旅游服务软件论文+程序
  • 2026毕设ssm+vue旅游出行系统论文+程序
  • 2026毕设ssm+vue旅游打卡系统论文+程序
  • ArcGIS Python零基础脚本开发教程---1.1 Describe 函数
  • 探秘Silane-PEG8-DBCO,硅烷-聚乙二醇8-二苯并环辛炔:三功能连接分子的设计与应用
  • 2026毕设ssm+vue旅游管理系统论文+程序
  • 向量数据库到底香不香?这篇选型指南帮你不再踩坑
  • 全网热议!2026年知名全自动砖机公司排名推荐,发现高品质固废与液压砖机厂家
  • 铁轨表面缺陷检测这事儿听起来挺硬核,但用MATLAB玩起来其实有点意思。咱们直接撸代码说人话,先搞张铁轨灰度图读进来
  • 【RAG】99-AI大模型应用RAG工程培训总体介绍
  • Linux环境编程第四天笔记
  • 零基础Git版本 安装教程
  • HTML--超链接