IOC译为控制反转,是一个抽象概念.从一个简单的java例子来理解IOC更容易:
传统模式下,我们调用一个服务接口,需要用new关键字声明它的实现类.比如一个支付接口,有一个外部而来的实现类:Zhifu1.在一个业务需求里面,需要用到Zhifu1类,于是在业务代码里会这样写:
Zhifu zf = new Zhifu1();
并且在所有业务里面都是使用相同方式调用
Zhifu1.那么问题来了,如果业务需求突然改变,或者因为某些原因,业务发生变动,实现类需要改变,需要改为使用另一个外部类
Pay1,那我们需要找到每个调用接口的地方,并一一改正过来.
...
...
然后在业务代码中通过spring上下文得到名为"ZhifuImpl"的类,并使用它,如果需要改变实现类,只需要在配置文件中将class改为对应的类即可,方便高效.
这就是IOC控制反转的概念,简单来讲,就是将控制权从业务代码里面脱离出来,交给专门的容器,让他们来管理Bean.