IoC控制反转
概念
Inversion of Control:控制反转,一个理论,一个指导思想,指导开发人员如何使用对象,管理对象。把对象的创建,属性赋值,对象的生命周期都交给代码之外的容器管理。
IoC 分为控制和反转两个部分:
控制:对象创建,属性赋值,对象生命周期管理。
反转:把开发人员管理对象的权限转移给了代码之外的容器实现,由容器完成对象的管理
正转:由开发人员使用new构造方法创建对象,开发人员掌握了对象的创建,属性赋值,对象从开始到销毁的全部过程,开发人员有对对象的全部控制。
通过容器可以使用容器中的对象(容器已经创建了对象,对象属性赋值了,对象也组装好了)。
IoC的技术实现
DI:Dependency injection 依赖注入 ,是IoC的一种技术实现。程序只需要提供使用的对象的名称就可以了,对象如何创建,如何从容器中查找,获取都由容器内部自己实现。
依赖名词:比如说Class A类使用了Class B的属性或者方法,叫做Class A 依赖Class B。
注入:赋值
public class ClasB{
public void createOrder(){}
}
public class ClassA{
//属性
private ClassB b = new ClassB();
public void buy(){
b.createOrder();
}
}
//执行ClassA的buy()
ClassA a = new ClassA();
a.buy();
Spring框架使用的DI实现IoC
通过spring框架,只需要提供要使用的对象名词就可以了,从容器中获取名称对应的对象。
spring底层使用的是反射机制,通过反射创建对象,给属性。为什么用反射,因为是java sdk自带的,不需要依赖第三方。