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

相关推荐
014-code1 天前
订单超时取消与库存回滚的完整实现(延迟任务 + 状态机)
java·开发语言
java1234_小锋1 天前
Java高频面试题:Springboot的自动配置原理?
java·spring boot·面试
末央&1 天前
【天机论坛】项目环境搭建和数据库设计
java·数据库
xiaoye37081 天前
Spring 中高级面试题
spring·面试
枫叶落雨2221 天前
ShardingSphere 介绍
java
花花鱼1 天前
Spring Security 与 Spring MVC
java·spring·mvc
言慢行善1 天前
sqlserver模糊查询问题
java·数据库·sqlserver
专吃海绵宝宝菠萝屋的派大星1 天前
使用Dify对接自己开发的mcp
java·服务器·前端
大数据新鸟1 天前
操作系统之虚拟内存
java·服务器·网络
Tong Z1 天前
常见的限流算法和实现原理
java·开发语言