Spring笔记整理-依赖注入和控制反转

依赖注入(DI)

 

Spring笔记整理-依赖注入和控制反转

 

以小汽车为例展示依赖注入问题

要制作一辆小汽车,如果要从下而上做的话,要先做轮子,然后做地盘,轮子大小约束底盘大小,做完了底盘最后再做车架,而底盘又约束车架的大小。

假设一开始轮子尺寸为15,后来业务需求要把轮子增大到25。那么底盘和车架的尺寸也要重新去设计。这样就会导致一个问题:一个小小的改动就会导致整体的修改。耦合度太高。

public class Wheel{

private int size;

Wheel(int size){

this.size = size;

}

}

Spring笔记整理-依赖注入和控制反转

 

public class Chassis{

private int wheel;

Chassis(int size){

wheel = new Wheel(size);

}

}

Spring笔记整理-依赖注入和控制反转

 

public class Car{

private int Chassis chassis;

Car(int size){

chassis= new Chassis(size);

}

public void finish(){

log.info("new car");

}

}

Car car = new Car();

car.finish();

如果size改变,后面的类的size全都要变,这里三个类就要改三个,如果十个类,就要改十个。会很麻烦。

使用依赖注入实现控制反转,即上层控制下层

把底层的类作为参数传递给上层类,实现上层对下层的控制

Spring笔记整理-依赖注入和控制反转

Spring笔记整理-依赖注入和控制反转

代码要改成这样,但是还是要new很多对象

Spring笔记整理-依赖注入和控制反转

IOC容器

Spring笔记整理-依赖注入和控制反转

Spring笔记整理-依赖注入和控制反转