理论入门7788 参见 夏昕的spring开发入门.pdf

          何谓控制反转(IoC =  Inversion of Control) ,何谓依赖注入(DI =Dependency  Injection);IoC,用白话来讲,就是由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。 
          正在业界为IoC争吵不休时, 大师级人物Martin Fowler也站出来发话, 以一篇经典文章 《Inversion of Control Containers and the Dependency Injection pattern》为IoC正名,至此,IoC又获得了一个新的名字: “依赖注入 (Dependency Injection) ”。 

          这就是笔者的主要工作装备,IBM T40笔记本电脑一台、USB硬盘和U盘各一只。想必大家在日常
工作中也有类似的一套行头。 
         这与依赖注入有什么关系? 
三个设备都有一个共同点,都支持 USB 接口。当我们需要将数据复制到外围存储设备时,可以根据情况,选择是保存在U盘还是USB硬盘,下面的操作大家也都轻车熟路,无非接通USB接口,然后在资源浏览器中将选定的文件拖放到指定的盘符. 这样的操作在过去几年中每天都在我们身边发生,而这也正是所谓依赖注入的一个典型案例,上面称之为“古老”想必也不为过分。 
         再看上例中,笔记本电脑与外围存储设备通过预先指定的一个接口(USB)相连,对于笔记本而言,只是将用户指定的数据发送到USB接口,而这些数据何去从,则由当前接入的USB设备决定。在USB设备加载之前,笔记本不可能预料用户将在USB接口上接入何种设备,只有USB设备接入之后,这种设备之间的依赖关系才开始形成 对应上面关于依赖注入机制的描述,在运行时(系统开机,USB 设备加载)由容器(运行在笔记本中的Windows操作系统)将依赖关系(笔记本依赖USB设备进行数据存取)注入到组件中(Windows文件访问组件) 。 这就是依赖注入模式在现实世界中的一个版本。

(以上引用至夏昕的spring开发入门.很好的解释了什么是依赖注入)