一、定义
IoC是Inversion of Controll的简写,即控制反转,其实就是对象控制权的转移,通常就是应用程序将对象的控制权转移给第三方容器并通过它来管理这些被依赖的对象,本质上这样做就是为应用程序与被依赖对象的解耦,即实现代码之间减少耦合度。
IoC是OOP中的一个设计原则,也是Spring 框架的核心,大多数应用程序的业务逻辑都需要2个以上的类进行合作完成,有了IoC可以减少他们之间的耦合度。
二、IoC如何实现
IoC的实现主要有两种:依赖注入(DI)和依赖查找。
依赖注入分为:
(1)基于注解,即@Autowired
(2)基于构造函数:这个有利于可以决定依赖的先后顺序。
(3)基于set方法:特定属性上public set()方法,让IoC容器调用注入所依赖类型的对象。
(4) 基于接口:实现特定接口以供IoC容器注入所依赖类型的对象。
依赖查找:相对依赖,更主动的方法,通过调用框架提供的方法来获取对象,获取时需要配置相关的配置文件路径,key等信息来确定获取对象的状态。
三、本质上对象之间的依赖,不再自己New 对象来创建,而通过容器来完成依赖关系的定义。