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 的基石。

相关推荐
用户298698530143 小时前
Word 文档字符级格式化:Java 实现方案详解
java·后端
笨鸟飞不快4 小时前
从单个服务到集群:一次完整的性能排查复盘
java·前端
荣码4 小时前
用Streamlit给AI应用套个界面,10行代码出Web页面
java·python
SamDeepThinking4 小时前
Java微服务练习方式
java·后端·微服务
朦胧之14 小时前
AI 编程-老项目改造篇
java·前端·后端
程序猿大帅19 小时前
别再只当调包侠了:用 Spring AI 落地 Function Calling,我被大模型硬生生砸出了三个大坑
java
程序员晓琪20 小时前
约定大于配置:基于 Java 包名自动生成 API 版本路由的最佳实践
java·spring boot·后端
Flittly20 小时前
【AgentScope Java新手村系列】(11)中断与恢复
java·spring boot·spring
众少成多积小致巨20 小时前
JNI (Java Native Interface) 技术手册中文参考指南
android·java·c++
东坡白菜21 小时前
破局全栈:前端开发的Java入门实战记录—JPA(2)
java·后端