美文网首页
spring Ioc原理

spring Ioc原理

作者: LeslieAlex | 来源:发表于2019-11-18 15:40 被阅读0次

    Ioc控制反转

    在ioc之前 对象于对象之间都是相互依赖相互有强耦合的关系。Ioc的出现就是为了解决这种强耦合的问题,Ioc容器也是一个第三方容器,将对象全部的控制权全部交给这个第三方Ioc容器,由ioc管理控制。
    软件系统在没有引入IOC容器之前,如图1所示,对象A依赖于对象B,那么对象A在初始化或者运行到某一点的时候,自己必须主动去创建对象B或者使用已经创建的对象B。无论是创建还是使用对象B,控制权都在自己手上。
    软件系统在引入IOC容器之后,这种情形就完全改变了,如图3所示,由于IOC容器的加入,对象A与对象B之间失去了直接联系,所以,当对象A运行到需要对象B的时候,IOC容器会主动创建一个对象B注入到对象A需要的地方。
    通过前后的对比,我们不难看出来:对象A获得依赖对象B的过程,由主动行为变为了被动行为,控制权颠倒过来了,这就是“控制反转”这个名称的由来。

    依赖注入(DI)

    实际上给出了实现IOC的方法:注入。所谓依赖注入,就是由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中。
    所以,依赖注入(DI)和控制反转(IOC)是从不同的角度的描述的同一件事情,就是指通过引入IOC容器,利用依赖关系注入的方式,实现对象之间的解耦。
    我们举一个生活中的例子,来帮助理解依赖注入的过程。大家对USB接口和USB设备应该都很熟悉吧,USB为我们使用电脑提供了很大的方便,现在有很多的外部设备都支持USB接口。

    • IOC 的作用:解耦、单例缓存、Bean生命周期管理、父子容器
    • IOC 工作要经历2个过程:启动预加载BeanDefination、实例化对象且缓存单例,传统BeanFactory的实现类是懒加载(loadClass时再实例化bean),而web容器实现是预加载(启动和实例化一起进行)。但是BeanDefination都是预加载的。

    相关文章

      网友评论

          本文标题:spring Ioc原理

          本文链接:https://www.haomeiwen.com/subject/gitbictx.html