我对IoC/DI的理解
?
IoC
?
IoC:?Inversion of Control,控制反转,?控制权从应用程序转移到框架(如IoC容器),是框架共有特性?
1、为什么需要IoC容器1.1、应用程序主动控制对象的实例化及依赖装配?A a = new AImpl();B b = new BImpl();a.setB(b);本质:创建对象,主动实例化,直接获取依赖,主动装配?A a = AFactory.createA();B b = BFactory.createB();a.setB(b);?本质:创建对象,被动实例化,间接获取依赖,主动装配??(简单工厂)?A a = Factory.create(“a”);B b = Factory.create(“b”);a.setB(b);?a=AImplb=BImpl?本质:创建对象,被动实例化,间接获取依赖,?主动装配????????(工厂+反射+properties配置文件、? ? ? ? ? ?Service Locator、注册表)?A a = Factory.create(“a”);?
<bean id=“a” class=“AImpl”> <property name=“b” ref=“b”/></bean><bean id=“b” class=“BImpl”/>?本质:创建对象和装配对象,?//返回装配好的a A a = ApplicationContext.getBean(“a”);?<!—配置文件-->
<bean id=“a” class=“AImpl”> <property name=“b” ref=“b”/></bean><bean id=“b” class=“BImpl”/>?