IoC(Inverse of Control)的字面意思是控制反转,它包括两个内容:
1、控制
指依赖对象的创建权
2、反转
将依赖对象的创建权交由外部容器处理。
1、控制
指依赖对象的创建权
2、反转
将依赖对象的创建权交由外部容器处理。
哪些方面的控制被反转了?指的是依赖对象的获得被反转了。因此也有一个更好的名字:依赖注入。
依赖注入有如下实现方式:
基于接口:实现特定接口以供外部容器注入所依赖类型的对象。
基于 set方法:实现特定属性的public set方法,来让外部容器调用传入所依赖类型的对象。
基于构造函数:实现特定参数的构造函数,在新建对象时传入所依赖类型的对象。
基于注解:基于Java的注解功能,在私有变量前加“@Autowired”等注解,不需要显式的定义以上三种代码,便可以让外部容器传入对应的对象。该方案相当于定义了public的set方法,但是因为没有真正的set方法,从而不会为了实现依赖注入导致暴露了不该暴露的接口(因为set方法只想让容器访问来注入而并不希望其他依赖此类的对象访问)。
应用控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。所以,控制反转是,关于一个对象如何获取他所依赖的对象的引用,这个责任的反转。
IoC 体现了 “依赖倒置原理”("Dependency Inversion Principle")。