
什么是 IoC?
Spring 本质上是一个包含众多工具方法的 IoC 容器。当我们给类添加 @RestController 或 @Controller 注解时,实际上是将对象的生命周期管理权交给了 Spring。框架启动后会自动加载并管理这些类,这种思想就是控制反转(Inversion of Control, IoC)。
简单来说,控制权发生了反转。在传统开发中,需要某个对象时,我们通常通过 new 关键字自己创建;而在 IoC 模式下,创建对象的任务被移交给了容器,程序只需要关注如何获取和使用这个依赖对象即可。这个负责管理的容器被称为 IoC 容器,Spring 正是这样一个典型的 IoC 容器。
传统实现思路的痛点
为了理解为什么需要 IoC,我们可以先看一个经典的汽车制造案例。假设我们要设计一辆车,逻辑是这样的:先设计轮胎 (Tire),再根据轮胎大小设计底盘 (Bottom),接着根据底盘设计车身 (Framework),最后组装成整车 (Car)。
这里存在明显的依赖关系:汽车依赖车身,车身依赖底盘,底盘依赖轮胎。

在这种传统模式下,代码结构如下:
public class Main {
public static void main(String[] args) {
Car car = new Car(21);
car.run();
Car car2 = new Car(17);
car2.run();
}
}
// 汽车
class Car {
private Framework framework;
public Car(int size) {
framework = (size);
System.out.println();
}
{
System.out.println();
}
}
{
Bottom bottom;
{
bottom = (size);
System.out.println();
}
}
{
Tire tire;
{
tire = (size);
System.out.println();
}
}
{
size;
{
System.out.println( + size);
}
}





