文章目录
一、Spring是什么?
我们通常所说的 Spring 指的是 Spring Framework(Spring 框架)
它是⼀个开源框架,有着活跃⽽
庞⼤的社区,这就是它之所以能⻓久不衰的原因。Spring ⽀持⼴泛的应⽤场景,它可以让 Java 企业级
的应⽤程序开发起来更简单。
⽤⼀句话概括 Spring:Spring 是包含了众多⼯具⽅法的 IoC 容器
二、核心思想
1.什么是IoC
IoC = Inversion of Control 翻译成中⽂是“控制反转”的意思
也就是说 Spring 是⼀个“控制反转”的容
器,怎么理解这句话呢,我们先从以下示例开始。
假如,我们现在构建⼀辆“⻋”的程序,我们的实现思路是这样的:
车(car)->车身(framewo)->轮胎(tire)
public class Car {
private FrameWork frameWork;
private Tire tire;
//造车身
FrameWork frameWork = new FrameWork();
//造轮子
Tire tire = new Tire();
//组装过程
public void init(){
System.out.printf("do car");
}
}
接下来如果我们的需求是要能造出各种尺寸的轮子
那么就得更改Tire类的构造方法,而这会导致FrameWork也跟着改变,耦合度太高,所以我们将FrameWork和Tire的控制权交出去,像这样
public class Car {
private FrameWork frameWork;
public Car(FrameWork frameWork){
this.frameWork = frameWork;
}
public void init(){
System.out.printf("do car");
}
}
只将framework拿来用,而不是自己造,将控制权转移给存有framework的事物。
2.DI
说到 IoC 不得不提的⼀个词就是“DI”,DI 是 Dependency Injection 的缩写,翻译成中⽂是“依赖注入”的意思。
所谓依赖注⼊,就是由 IoC 容器在运⾏期间,动态地将某种依赖关系注⼊到对象之中。所以,依赖注⼊(DI)和控制反转(IoC)是从不同的⻆度的描述的同⼀件事情,就是指通过引⼊ IoC 容器,利⽤依赖关系注⼊的⽅式,实现对象之间的解耦。
IoC 是“⽬标”也是⼀种思想,⽽⽬标和思想只是⼀种指导原则,最终还是要有可⾏的落地⽅案,⽽ DI就属于具体的实现。