https://www.zhihu.com/question/381216328
IoC不是一种技术,只是一种思想,一个重要的面向对象编程的法则。
IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象。
体现了面向对象设计法则之一——好莱坞法则:“别找我们,我们找你”;即由IoC容器帮对象找相应的依赖对象并注入,而不是由对象主动去找 DI—Dependency Injection,即“依赖注入”:是组件之间依赖关系由容器在运行期决定。
理解DI的关键是:“谁依赖谁,为什么需要依赖,谁注入谁,注入了什么”,那我们来深入分析一下:
●谁依赖于谁:当然是应用程序依赖于IoC容器;
●为什么需要依赖:应用程序需要IoC容器来提供对象需要的外部资源; ●谁注入谁:很明显是IoC容器注入应用程序某个对象,应用程序依赖的对象;
●注入了什么:就是注入某个对象所需要的外部资源(包括对象、资源、常量数据) 本质上IoC和DI是同一思想下不同维度的表现
,用通俗的话说就是,IoC是bean的注册,DI是bean的初始化



