一.什么是IoC
IoC 是 Iversion Of Control 的缩写,中文译为“控制反转”或“依赖注入”,它提供了一种轻松简介的方式为我们获取所需要依赖的对象;简单的说,你要什么对象,别人就会给你送来什么对象,这里的“别人”指IoC Service Provider ,即IoC这种服务的提供者,通常由IoC容器来充当这个角色,而Spring就是一个很好的IoC容器。
二.依赖注入的三种方式
1.构造方法注入
即在被注入的对象的构造方法中声明所需要依赖对象的方法,当你需要这个对象是,IoC 容器会检查该对象的构造方法,根据该构造方法注入它所依赖的对象。
2.setter方法注入
setter 方法注入随意性比较强,可以在对象初始化完毕后再进行注入。
3.接口注入
接口注入需要被注入的对象必须实现某个接口,IoC 容器通过这个接口来注入需要依赖的对象,与setter 方法相比比较死板,不提倡使用。
三.IoC 的价值
所有的对象都由IoC容器产生,各个对象间的依赖都配置在XML中,要某个对象时,根据配置去组装,这种方式大大降低了对象间的耦合度,提高了程序的灵活性和可维护性。
四.IoC Service Provider
即服务的提供者,它提供的服务管理对象及对象间的依赖。
一.IoC Service Provider 的职责
IoC Service Provider 的职责主要有两个:
1.业务对象的构建管理,IoC Service Provider 将业务对象的构建从程序中分离出来,使开发人员专注于业务逻辑的实现,并且使业务逻辑的实现更加清晰;
2.业务对象间的依赖绑定,IoC Service Provider 在对象使用的时候通过对象间的依赖关系将对象所需的依赖注入到该对象中,以完成“Don't call us,we will call you” 任务。
二.IoC Service Provider 如何管理对象间的依赖关系
有以下几种方式,标识对象间的依赖关系,以便进行注入:
1.直接编码方式:即在代码中编写代码,直接从IoC 容器中取出相应的对象实例,简单的说就是“我需要什么,直接告诉IoC 容器,给我拿过来”。
2.配置文件的方式:即把对象间的依赖关系放到一个文件中,这个文件时普通的文本文件、properties文件或XML文件。
3.注解:Java 5 以后直接可以通过注解的方式就可以让IoC容器知道,我需要什么。