spring之控制反转(IoC)

一、什么是spring的控制反转

控制反转是Spring框架的核心,其原理是基于面向对象(OO)设计原则的,也可以称为依赖注入(DI)。而所谓的反转是指不同对象之间的调用由原来的主动创建,调用变成后来的被动创建及调用。其实Spring是把所有的依赖的管理都交给了IoC窗口来做,即依赖的创建,调用都是由该容器来做。

二、可以通过工厂模式来理解控制反转思想

如A组件要完成某个功能时,需要B组件来配置才可以完成。正常的做法是在A组件中创建或调用已有的B级组件,便这样做的话A、B组件就有了直接的关联,不符合面向对象的设计原则(解耦合)。所以,我们可以通过A组件调用B组件的相应工厂对象来实现A、B组件之间的耦合关系。而Spring的IoC容器其实就相当于所有组件的工厂。

三、控制反转的作用

  1. 可维护性比较好,非常便于进行单元测试,便于调试程序和诊断故障。代码中的第一个Class都可以单独测试,彼此间互不影响,只要保证自身的功能无误即可,这就是组件间低耦合或者无耦合带来的好处。
  2. 每个开发团队的成员都只需要关注自己要实现的业务逻辑,完全不用去关心其他人的工作进展,因为你的任务跟别人没有任何关系,你的任务可以单独测试,你的任务也不用依赖于别人的组件,再也不用扯不清责任。所以,在一个大中型项目中,团队成员分工明确,责任明确,很容易将一个大的任务划分为细小的任务,开发效率和产品质量必将得到大幅度的提高。
  3. 可复用性好,我们可以把具有普遍性的常用组件独立出来,反复应用到项目中的其他部分,或者是其他的项目,当然这也是面向对象的基本特征。显然,IoC更好地贯彻了这个原则,提高了模块的可复用性。符合接口标准的实现,都可以插接到支持此标准的模块中。
  4. IoC生成对象的方式转为外置方式,也就是把对象生成放在配置文件里进行定义,这样,当我们更换一个实现子类会变得很简单,只要修改配置文件就可以了,完全具体有热插拔的特性。

猜你喜欢

转载自blog.csdn.net/wangshou84/article/details/88926459