IOC:控制反转是一种概念。控制反转中的控制和反转分别是什么呢?控制代表的对Javabean的控制。在传统的创建对象上,开发人员通常都是通过new 关键字或者反射等其他关键字来创建一个Java对象,强调的是开发人员主动的去创建对象,并且去主动获取此对象的依赖。而Spring则是容器专门负责对对象的创建,我们并不需要关心怎么去创建它的。在我们需要一个依赖时,我们并不需要主动去获取依赖,Spring容易会根据需求去把依赖送过来。
图一、传统的获取对象和依赖的方式
图二、IOC对对象的管理方式
DI:依赖注入是IOC的一种实现。依赖是代表对象需要的外部资源(对象,常量等)。应用程序需要外部资源时,并不需要主动去寻找相应的外部资源,而是由Spring容器主动将相应的外部资源提供,应用程序无需关系资源是怎么来的。此过程是在容器运行时动态进行的。