spring IOC 和DI

来源:互联网 发布:卖房用什么软件 编辑:程序博客网 时间:2024/05/20 20:55

首先,解释下IOC这个名词含义,IOC的英文名称为inverse of control,控制反转的意思。原先我们对象的创建是在程序中进行的,比如使用NEW关键字进行创建一个对象,现在这种对象的创建和维护对象之间的关系,转移到了IOC容器中。由IOC容器对对象进行创建和统一管理BEAN对象并维护BEAN之间的关系。
DI的英文名称叫dependency injection,依赖注入的关系。DI和IOC其实是同一个概念,spring的设计者觉得DI概念更能体现spring核心,使表达更贴切。我对于依赖注入的理解,BEAN与BEAN之间的关系,可以在IOC容器中进行配置,通过BEAN标签中的property标签中的REF属性设置,此个BEAN与另外的一个BEAN之间就建立起了依赖的关系。又可以通过property,对对象的成员变量或引用变量进行注入
IOC的注入方式有三种:1.接口注入 2.setter方法注入 3.构造函数方法注入。
接口注入因为要声明一个接口,增加了类的数目,又必须实现不必要的接口和接口中的方法,这样做使业务对象的侵入性增加,所以不建议使用这种方式。
setter方式,是我经常使用的一种方式,因为简单又好理解,也不会增加类的数目和增加类的藕合性。
对于构造函数的方式,注入对象通过参数列表进行传递,当注入对象较多时,参数列表会比较长,当进行反射来创建对象时,对于相同类型的参数的处理,维护比较困难。**
使用IOC的好处:1.便于统一管理BEAN对象和维护BEAN与BEAN之间的关系,对象具有更好的可重用性和可扩展性 2.降低了使用资源双方的依赖程度

1 0