IOC:思想是反转资源获取的方向。传统的资源查找方式要求组件向容器发起请求查找资源,作为回应,容器适时的返回资源。而应用了IOC之后,则是容器主动地将资源推送给它所管理的组件。组件所要做的仅仅是选择一种合适的方式来接收资源,这种查找方式也被称为查找的被动形式。
DI:IOC的另一种表述形式。即组件以一些预定义好的方式(例如:setter方法)接受来自如容器的资源注入。相对于IOC而言,这种表述更为直接。
举个例子:
需求,从容器中获取A的对象,并使B对象中的a属性被赋值为容器中A对象的引用。
class A{ } class B{ private A a; public void setA(A a) { this.a = a; } }
传统的方式:
首先获取对象:A a = getA();B b = getB();
然后调用方法:b.setA(a) ;
即我们要先获取所有的对象,然后将其中某个对象作为参数传给另一个对象。
使用IOC容器之后:
IOC容器内部会自动为我们建立其之间的关系,获取时我们只需要B b = getB()即可。
原文:https://www.cnblogs.com/xiximayou/p/12149471.html