美文网首页
Spring IOC总结

Spring IOC总结

作者: niaoge2016 | 来源:发表于2016-08-31 20:09 被阅读264次

概念介绍

  • IOC
    即控制反转(Inversion of Control),就是把原先我们代码里面需要实现的对象创建、依赖的代码,反转给容器来帮忙实现和管理。

  • IOC容器
    IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。

  • DI
    即依赖注入(Dependency Injection),在IOC容器运行期间,动态的将某种依赖关系注入到对象之中。

  • IoC和DI由什么关系呢?
    其实它们是同一个概念的不同角度描述,由于控制反转概念比较含糊(可能只是理解为容器控制对象这一个层面,很难让人想到谁来维护对象关系),所以2004年大师级人物Martin Fowler又给出了一个新的名字:“依赖注入”,相对IoC 而言,“依赖注入”明确描述了“被注入对象依赖IoC容器配置依赖对象”。

IOC原理

在软件开发过程中,系统的各对象之间,各模块之间,软件系统与硬件系统之间或多或少都会存在耦合关系,如果一个系统的耦合度过高,就会造成难以维护的问题。下图展示了系统中的耦合问题

软件系统中耦合的对象

为了解决上面介绍的耦合度过高的问题,IOC理论提出了借助“第三方”来实现具有依赖关系的对象之间的解耦。如下图所示

IOC解耦过程

这样各个对象之间就不直接关联,而是在需要用到对方的时候由IOC容器(第三方)来管理对象之间的依赖关系,我们只需要维护相对独立的各个对象代码即可。

关键技术

  • 反射
    在运行状态中,根据提供的类的路径或者类名,动态的获取该类的所有属性和方法。

  • 工厂模式的改进
    把IOC容器当做一个工厂,在配置文件或者注解中给出定义,然后利用反射技术根据给出的类名生成相应的对象。对象生成的代码以及对象之间的依赖关系,在配置文件中定义,这样就实现了解耦。

参考资料

[1]谈谈对Spring IOC的理解
[2] Spring的IOC原理[通俗解释一下]
[3]Spring IOC容器基本原理

相关文章

网友评论

      本文标题:Spring IOC总结

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