Spring IOC学习笔记

  1. 分享一下对Spring框架的IOC的理解
  • What (IOC容器是什么)

Ioc—Inversion of Control(控制反转),是一种设计思想,在面向对象方法设计的系统中,要形成一定的业务逻辑,要靠N个对象之间的合作。我们常常接触到的BeanFactoryApplicationContext都可以看成是容器的具体表现形式。在学习spring之前,希望要学习好设计模式。至少了解到常用的设计模式:工厂模式,单例模式,代理模式,模板模式,适配器模式。了解到软件架构的原则:开闭原则,依赖倒置原则,单一原则,接口原则......这些贯穿学习spring的重要思想。

  • why(为什么要用)

例如没有用到IOC容器前:一个客户想要去找公司开发一个业务,首先他要找到一个公司对象,再去选择要办理的业务

                               Spring IOC学习笔记

这样看起来行得通,但是,如果要找多个公司做业务(多个对象),或者要修改某个公司的业务(修改对象的方法)。那么就要修改非常多的代码。不符合降低系统之间、模块之间和对象之间的耦合度。给开发带来许多麻烦。

所以,引入IOC容器后:客户直接从IOC容器获取公司名称:IOC容器就要找到公司,在看公司是否有业务可以做。有业务就要创建一个业务类。再注入公司名称。

                                             Spring IOC学习笔记

结论:控制反转IoC(Inversion of Control)是说创建对象的控制权进行转移,以前创建对象的主动权和创建时机是由自己把控的,而现在这种权力转移到第三方,比如转移交给了IoC容器。没有IOC,客户要谈一个业务,就要先找到公司,再去利用公司去找到业务。在这个过程中,这个合作对象是由自己主动创建出来的,创建合作对象的主动权在自己手上,自己需要哪个合作对象,就主动去创建,创建合作对象的主动权和创建时机是由自己把控的,而这样就会使得对象间的耦合度高了。公司与业务就存在了依赖,存在一种耦合关系,并且是紧密耦合在一起。利用了IOC容器:依赖关系就变了,原先的依赖关系就没了,它们都依赖IoC容器了,通过IoC容器来建立它们之间的关系。