spring控制反转(IOC)
一、IOC的基础知识以及原理 背景:在采用面向对象方法设计的软件系统中,底层实现都是有N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑。即软件系统中对象之间的耦合,对象A和对象B之间有关联,对象B又和对象C有依赖关系,这样对象和对象之间有着复杂的依赖关系,所有才有了控制反转这个理论。 什么是控制反转(IOC)? IOC是Inversion of Control的缩写,有的翻译成控制反转,还有翻译成为控制反向或者控制倒置。 简单来说就是把复杂系统分解成相互合作的对象,这些对象类通过封装以后,内部实现是对外部来说是透明的,从而降低了解决问题的复杂度,从而可以灵活地被重要和扩展。IOC理论提出的观点大体是这样的:借助于“第三方”实现具有依赖对象之间的解耦,如下图所示: 即把各个对象类封装之后,通过IOC容器来关联这些对象类。这样对象与对象直接就通过IOC容器进行联系,但对象与对象之间没有什么直接联系。 如果去掉IOC容器后系统中的对象A与对象B就有了直接联系,如右图所示 比如好多的对象类要关联起来的话,就会变得很复杂,如右图所示: 所以提出IOC控制反转还是很有必要的。 为什么要把这种方式叫做控制反转呢? 软件系统在没有引入IOC容器之前,对象A依赖对象B,那么A对象在实例化或者运行到某一点的时候,自己必须主动创建对象B或者使用已经创建好的对象B