Spring笔记整理-依赖注入和控制反转
依赖注入(DI)
以小汽车为例展示依赖注入问题
要制作一辆小汽车,如果要从下而上做的话,要先做轮子,然后做地盘,轮子大小约束底盘大小,做完了底盘最后再做车架,而底盘又约束车架的大小。
假设一开始轮子尺寸为15,后来业务需求要把轮子增大到25。那么底盘和车架的尺寸也要重新去设计。这样就会导致一个问题:一个小小的改动就会导致整体的修改。耦合度太高。
public class Wheel{
private int size;
Wheel(int size){
this.size = size;
}
}
public class Chassis{
private int wheel;
Chassis(int size){
wheel = new Wheel(size);
}
}
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全都要变,这里三个类就要改三个,如果十个类,就要改十个。会很麻烦。
使用依赖注入实现控制反转,即上层控制下层
把底层的类作为参数传递给上层类,实现上层对下层的控制
代码要改成这样,但是还是要new很多对象
IOC容器