依赖注入(DI)和控制反转(IOC)
来源:互联网 发布:酒店淡季网络促销活动 编辑:程序博客网 时间:2024/06/10 07:16
依赖注入是用于实现控制反转的最常见的方式之一。
依赖注入的思想是:当一个类对另一个类有依赖时,不在该类内部对依赖的类进行实例化,而是有一个配置好了的bean.xml文件,告诉容器所依赖的类,在实例化该类时,容器自动注入一个依赖的类的实例。
例如:我要用电脑看视频,就需要用到电脑的ShowVideo方法。有两个类,一个是我,一个是电脑,
传统的方法就是在类中先实例化依赖的类,然后再调用该类中的方法。
public class Me{public static void Play(){
Computer computer=new Computer();
computer.ShowVideo();
}
}
引入依赖注入的思想之后,就不用在Me类中实例化Computer类,代码就可以改变成如下的样子
public Interface ComputerInterface{ //定义了一个电脑的接口
public void ShowVideo(); //声明看视频的方法
}
public class Me{
private ComputerInterface computerInterface;
public static void Play(){
this.computerInterface.ShowVideo();
}
public void setComputerInterface(ComputerInterface computerInterface){
this.computerInterface=computerInterface;
}
}
接下来在bean.xml文件中配置一下依赖关系
<bean id="me" class="Me">
<property name="computerInterface">
<ref local="computerInterface"/>
</property>
</bean>
<bean id="computerInterface" class="Computer">
这样,在“我”使用电脑看视频时,并不知道电脑这个类的存在,只知道调用了一个接口ComputerInterface,而ComputerInterface的实现由Computer这个类来实现,并且使用时有容器自动注入,这样就降低了容器之间的相互依赖。
总结一下依赖注入的优点:
1,我们可以将spring IOC理解成一个仓库,放着各种bean的实例,需要的时候直接从仓库拿,不需要重新建立一份,实现了代码的单例模式。
2,如果直接new实例化的时候,需要有new实体类,如果累有变动,一个一个的改比较麻烦,利用了spring ioc之后直接修改一个xml文件即可。
3.提高了系统的耦合性。
IOC:控制反转。
通俗的解释例如,我们找对象,可以自己找,根据自己的眼缘来看,这样就是所有的事情都亲力亲为。另外一种方法就是通过别人介绍,相亲来找,通过向别人描述自己的要求,比如身高,体重,年龄,学历,让别人给自己寻找一个合适的人。就是将一些事情交给一些机构容器来办。
IOC就是这样的一种思想。所有的类都会在Spring容器中登记,告诉Spring你是个什么,需要什么,spring会在系统运行到合适的时候,把你需要的东西主动给你,同样,它也可以把你给其他需要你的类。所有类的创建,销毁都由Spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他的的对象,现在是所有的对象都是有Spring控制的,这也就是叫做控制反转的原因。
控制反转(IOC)和依赖注入(DI)的联系:
在Spring里创建被调用者的工作不再由调用者来完成,因此成为控制反转,创建被调用者的的实例工作通常由IOC容器来完成,然后注入调用者,因此也成为依赖注入。
- IOC(控制反转) DI(依赖注入)
- IoC(控制反转)和DI(依赖注入)
- 解构控制反转(IoC)和依赖注入(DI)
- 控制反转(IoC)和依赖注入(DI)
- ioc(控制的反转) 和di(依赖注入)
- Spring IOC(控制反转)和DI(依赖注入)
- 控制反转(IOC)和依赖注入(DI)
- 依赖注入(DI) 和 控制反转(IoC)
- PHP控制反转(IOC)和依赖注入(DI)
- 控制反转(IOc)和依赖注入(DI)
- 依赖注入(DI)和控制反转(IOC)
- PHP控制反转(IOC)和依赖注入(DI)
- IoC(控制反转)和DI(依赖注入)
- 依赖注入(DI)和控制反转(IOC)
- (3.1.5)IOC控制反转和DI依赖注入
- 控制反转与依赖注入(IOC和DI)
- 控制反转IOC和依赖注入DI
- 控制反转IOC和依赖注入DI
- WOJ1123-Bishops
- JSON基本概念
- 三种动画的混合播放
- PAT-TL 1009. Triple Inversions
- 一个sql的四种写法:sum...case.when、sum if、select(select..)、group by
- 依赖注入(DI)和控制反转(IOC)
- 数据迁移实施方案
- 隐匿输入
- matlab2c使用c++实现matlab函数系列教程-polyder函数
- 题目1172:哈夫曼树
- CodeForces 266 A.Stones on the Table(水~)
- WAMP环境配置
- 自定义View实现圆形百分比加载的效果
- Spring Boot学习--热部署