SpringIOC

本篇原址:http://jinnianshilongnian.iteye.com/blog/1413846

个人只是将其精简,以便自己理解概念


 IOC-Inversion of Control,控制反转。这是一种设计思想。在Java开发中,IOC思想意味着将开发者设计好的对象交给容器管理,而不是在对象内存直接控制。

理解IOC,可以从几个点出发去思考:

  1、谁控制谁

  2、控制什么

  3、什么是正转和反转

  4、哪些方面反转了


 1、谁控制谁:

  在传统的Java SE程序设计中,我们直接在对象内部通过new关键字进行对象创建。程序主动创建依赖对象。而IOC是一个专门的容器用来控制对象的创建。这里是IOC容器控制了对象

2、控制什么:

  IOC控制对象的创建代替程序主动创建依赖对象,IOC主要控制了外部资源的获取(不只是对象)。

3、什么是正转和反转:

  正转即在传统开发时,开发者在对象中主动控制去直接获取依赖对象。

  如图:

    

  反转则是由容器来帮忙创建及注入依赖对象。为何叫这种方式为反转呢?因为容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象。

  如图:

    


IOC的功能:

  通过IOC思想,实现了主从换位的变化。传统开发应用程序时主,获取资源是主动获取。但IOC中,应用程序变成被动的,被动的等待IOC容器来创建并注入它所需要的资源。


 IOC和DI:

  DI-Dependency Injection,依赖注入。组件之间依赖关系由容器在运行期决定。即由容器动态的将某个依赖关系注入到组件中。依赖注入是为了提升组件重用的频率,并为系统搭建一个灵活可扩展的平台。通过依赖注入机制,开发者只需要通过简单的配置,而无需任何代码就可指定目标需要的资源,完成自身业务逻辑,而不需要关心具体的资源来自何处,由谁实现。

  关于DI,开发者理解时也可以从下面几个点来思考:

  1、谁依赖谁

  2、为什么需要依赖

  3、谁注入谁

  4、注入了什么


 1、谁依赖谁:

  应用程序依赖于IOC容器

2、为什么需要依赖:

  应用程序需要IOC容器来提供对象需要的外部资源

3、谁注入谁:

  IOC容器注入应用程序某个对象,应用程序依赖的对象

4、注入了什么:

  注入某个对象所需要的外部资源(包括对象、资源、常量数据)


 IOC与DI是同一个概念不同角度的描述。依赖注入明确描述了被注入对象依赖IOC容器配置依赖对象。

原文地址:https://www.cnblogs.com/zhangbLearn/p/9974480.html