关于Spring中的[控制反转]和[依赖注入]的深入理解

来源:互联网 发布:死亡之屋4软件下载 编辑:程序博客网 时间:2024/05/22 12:06

第一段说明

  • 对于一个Bean 来说,如果你依赖别的Bean , 只需要声明即可, spring 容器负责把依赖的bean 给“注入进去“, 起初大家称之为控制反转(IoC)
  • 后来 Martin flower 给这种方式起来个更好的名字,叫“依赖注入”。
  • 如果一个Bean 需要一些像事务,日志,安全这样的通用的服务, 也是只需要声明即可, spring 容器在运行时能够动态的“织入”这些服务, 这叫AOP。

第二段说明

  • 控制反转(IoC=Inversion of Control)IoC,用白话来讲,就是由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:(依赖)控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。

  • 所谓依赖注入,即组件之间的依赖关系由容器在运行期决定,形象的来说,即由容器动态的将某种依赖关系注入到组件之中。

  • 正在业界为IoC争吵不休时,大师级人物Martin Fowler也站出来发话,以一篇经典文章《Inversion of Control Containers and the Dependency Injection pattern》为IoC正名,至此,IoC又获得了一个新的名字:“依赖注入(Dependency Injection)”。

从上面的两段说明文字可以看出:
其实所谓的Ioc和DI,是说的同一件事,强调的内容不同而已。

  • IoC控制反转,强调容器的作用,用于组织或控制容器内bean的运行。
  • DI依赖注入,强调Bean需要外部注入才能正常运转。相对地说做容器框架的(比如Spring)当然强调控制了,怎么更好的控制别的Bean的运行,相反做模块的,当然强调注入了,我到底需要依赖注入什么。

写给自己:自己刚刚接触Spring,对于上面的两个概念还不是很清晰,以作总结。

原创粉丝点击