Spring 是一个包含众多工具方法的 IoC 容器。理解它,首先要明白什么是 IoC。
什么是 IoC
IoC 全称 Inversion of Control(控制反转)。简单来说,就是把对象的创建和管理权从代码中移交给 Spring 容器。
比如在类上添加 @RestController 或 @Controller 注解,就是告诉 Spring:这个对象归你管了。Spring 启动时会自动加载并管理该类。这种将依赖对象的获取过程反转给容器的思想,就是 IoC。
在传统开发模式中,需要某个对象时,通常通过 new 关键字自己创建。而在 Spring 中,我们不需要关心对象怎么创建,只需要声明依赖,由容器完成注入工作。这个负责管理的容器,就称为 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) {
// 内部直接 new 出依赖对象
framework = new Framework(size);
System.out.println("framework init...");
}
public void run() {
System.out.println("car run...");
}
}
{
Bottom bottom;
{
bottom = (size);
System.out.println();
}
}
{
Tire tire;
{
tire = (size);
System.out.println();
}
}
{
size;
{
System.out.println( + size);
}
}


