您的位置:首页 > 编程语言 > Java开发

spring IOC(控制反转)和DI(依赖注入)以及三种依赖注入方式的比较

2018-02-07 22:31 781 查看
1.Spring中IOC的优点是什么?
IOC 或 依赖注入把应用的代码量降到最低。它使应用容易测试,单元测试不再需要单例和JNDI查找机制。
最小的代价和最小的侵入性使松散耦合得以实现。IOC容器支持加载服务时的饿汉式初始化和懒加载

2.什么是Spring的依赖注入?
依赖注入,是IOC的一个方面,是个通常的概念,它有多种解释。这概念是说你不用创建对象,而只需要描述
它如何被创建。你不用在代码里直接组装你的组件和服务,但是要在配置文件里描述哪些组件需要哪些服务,之
后一个容器(IOC容器)负责把他们组装起来。
3.spring中有哪些依赖注入的方式?

构造器依赖注入:构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一
个对其他类的依赖。
Setter方法注入:Setter方法注入是容器通过调用无参构造器或无参static工厂 方法实例化bean之后,调用该
bean的setter方法,即实现了基于setter的依赖注入
接口注入:根据预先再配置文件中设定的实现类的类名,动态加载实现类,并通过接口强制转型后为对应的类使
用,这就是接口注入,但不推荐使用,因为当一个框架使用接口注入时,就离不开它了,侵入性太强。
4.三种依赖注入方式的比较?
接口注入:

接口注入模式因为历史较为悠久,在很多容器中都已经得到应用。但由于其在灵活性、易用性上不如其他两种注入
模式,因而在 IOC的专题世界内并不被看好。
Setter 注入:
对于习惯了传统 javabean 开发的程序员,通过 setter 方法设定依赖关系更加直观。
如果依赖关系较为复杂,那么构造子注入模式的构造函数也会相当庞大,而此时设值注入模式则更为简洁。
如果用到了第三方类库,可能要求我们的组件提供一个默认的构造函数,此时构造子注入模式也不适用。

构造器注入:
在构造期间完成一个完整的、合法的对象。
所有依赖关系在构造函数中集中呈现。
依赖关系在构造时由容器一次性设定,组件被创建之后一直处于相对“不变”的稳定状态。
只有组件的创建者关心其内部依赖关系,对调用者而言,该依赖关系处于“黑盒”之中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring IOC