IoC(控制反转)详解:Spring 的核心思想

目录

[1. 什么是 IoC?](#1. 什么是 IoC?)

[2. 传统方式 vs IoC 方式](#2. 传统方式 vs IoC 方式)

[2.1 传统方式(紧耦合)](#2.1 传统方式(紧耦合))

[2.2 IoC 方式(解耦)](#2.2 IoC 方式(解耦))

[3. IoC 的本质是什么?](#3. IoC 的本质是什么?)

[4. IoC 与 DI 的关系](#4. IoC 与 DI 的关系)

[5. Spring IoC 容器的核心职责](#5. Spring IoC 容器的核心职责)

[6. 常见注入方式](#6. 常见注入方式)

[7. IoC 的应用场景](#7. IoC 的应用场景)

[8. 一句话总结](#8. 一句话总结)


1. 什么是 IoC?

IoC(Inversion of Control,控制反转)是一种设计思想 ,它的核心是:将对象的创建和依赖关系的维护,从程序代码中交给容器来完成。

在传统开发中,对象的控制权掌握在程序员手中;

而在 IoC 模式下,这个控制权被"反转"给了容器。

2. 传统方式 vs IoC 方式

2.1 传统方式(紧耦合)

java 复制代码
public class UserService {
    private UserDao userDao = new UserDao();
}

问题:

  • 类之间强依赖

  • 难以替换实现

  • 不利于测试和扩展

2.2 IoC 方式(解耦)

java 复制代码
public class UserService {
    private UserDao userDao;

    public UserService(UserDao userDao) {
        this.userDao = userDao;
    }
}

对象的创建和注入交给 Spring:

java 复制代码
@Component
public class UserDao {}
java 复制代码
@Service
public class UserService {
    @Autowired
    private UserDao userDao;
}

3. IoC 的本质是什么?

本质只有一句话:对象不再自己创建依赖,而是被动接收依赖。

这带来了:

  • 低耦合

  • 高可维护性

  • 更易扩展

4. IoC 与 DI 的关系

名称 含义
IoC 一种设计思想
DI(Dependency Injection) IoC 的具体实现方式

DI 是手段,IoC 是目的

5. Spring IoC 容器的核心职责

Spring IoC 容器主要做三件事:

  1. 创建对象(Bean)

  2. 管理对象生命周期

  3. 维护对象之间的依赖关系


6. 常见注入方式

  • 构造器注入(推荐)

  • Setter 注入

  • 字段注入(@Autowired)


7. IoC 的应用场景

  • Service / Dao 解耦

  • 配置驱动开发

  • 单元测试(Mock)

  • 大型项目模块化设计


8. 一句话总结

IoC 是一种"把对象控制权交给容器"的设计思想,是 Spring 的基石。

相关推荐
晨曦中的暮雨2 小时前
限流算法——固定窗口、滑动窗口、漏桶、令牌桶
java·开发语言·算法
文丑颜不良啊3 小时前
LeetCode876~900题目解析
java·leetcode
aloha_7894 小时前
Java 基础、集合、异常与 JUnit 5 速查
java·junit·sqlserver
CarIise4 小时前
SpringMVC 异常处理与拦截器
大数据·spring
知守观4 小时前
设计模式实战:从真实老项目中看标准模板方法与工厂的落地
java·spring·设计模式
独隅4 小时前
Claude API 实战教程:从入门到完整项目
android·java·数据库·claude·claude code
Wang's Blog5 小时前
Java 项目实战: 交友项目 - 圈子功能实现:总结
java·开发语言·交友
SL_staff5 小时前
JVS私有化文档系统上线避坑指南:5大运维与业务协同断点及检测加固实践
java·开源·全栈
FinelyYang7 小时前
考试系统简答题 AI 阅卷:覆盖度驱动、异步评分与人机协同落地实践
java·大数据·人工智能
hhhjhl7 小时前
Yup 跨端三方库仓颉适配全流程
java·开发语言