Spring理解IOC和DI

spring

spring中有两个非常重要的点:

  • IOC(控制反转)
  • DI(依赖注入)

1 IOC

1.1 IOC是什么

控制反转(Inversion of Control),是一种面向对象编程的设计原则,用来降低耦合度 。
最常见的方式是

  • 依赖注入 (dependency Injection,简称DI)
  • 依赖查找 (dependency Lookup)

1.2 IOC的三个问题

1、谁控制谁?

Ioc其实可以把它当做一个容器,一个存储对象的容器,我们开发中的对象都可以交给spring Ioc容器做一个统一的规范管理,就好像是我们每个人都有自己的简历,全部交给人力资源局来管理,Ioc容器就充当一个人力资源局的角色;

2、控制了什么?

既然我们的开发之中的对象已经全部交由Ioc容器来管理了,那我们在获取对象的时候就得由Ioc容器来给我们提供,那么然Ioc容器也就控制了我们实例对象的获取权,就好像我们要去取得一个人的档案,就得由人力资源局提供,人力资源局控制了我们档案的提取;

3、怎么就反转了

其实说白了就是一个控制权的反转,好比我们需要一个其他人的档案,我们直接去找这个人家要过来,这个事情是我们来做,控制权就在我们手里(程序过程就是classA需要一个classB的实例,就在A类中直接new 一个B的实例来使用),但是现在我们不直接向这个人所要档案了,我们去向资源局去索要这个人的档案,由人力局把档案给我们(程序过程就是classA需要classB的一个实例,然后告诉Ioc容器,我需要B的实例,你给我一个,然后容器把B的实例给classA),现在,弄档案这个事情是资源局在做而不是我们了,这个弄档案的事情的控制权到了资源局手里而非我们自己去弄,Ioc的职责就像是资源局,我们在使用spring框架开发时,就把我们的对象交由spring Ioc容器来管理,我们对实例对象的控制权利发生了一个反转;

1.3 IOC的作用

Ioc是一种设计思想,帮助我们实现程序之间的解耦,设计出耦合性更低更优良的的程序,传统的开发模式在程序类的内部主动的依赖对象(new Object)来实现注入,从而使的类之间高度耦合,有了Ioc容器之后,我们可以把对象的控制权交给容器,让容器为我们创建管理对象,这样,对象之间耦合度变低,程序的架构体系也会更加的灵活;

2 DI

2.1 DI 是什么

DI指在容器运行的时候,扫描所有的依赖关系,并为之动态的注入对应的依赖关系
比如,我们需要某人的档案了,就给人力资源局发一个通知,告诉他我需要领取xxx的档案,然后资源局就把档案给你送过来,我们领取档案的过程就是DI(依赖注入)

2.2 DI的三个问题

1、谁依赖谁

从我们领取档案的流程来看就知道我们依赖于人力资源局,也就是说程序依赖于Ioc容器

2、谁注入了谁

人力资源局把档案给我们,也就是说Ioc容器把对象注入了程序之中(这个过程就是依赖注入)

3、注入了什么

我们向人力资源局要档案然后给了我们,就是容器把我们依赖的对象注入了程序

3 DI和IOC

他两的关系就像是同一个问题的不同角度的描述,总是那么的紧密相连.
其实Ioc容器就是为我们提供一个公共的管理平台,管理我们对象之间的依赖关系我们需要什么就向容器要,容器之中如果要就会给我们,我们拿过来直接用,而不用去考虑对象什么时候创建,什么时候销毁,只管用就行了,是不是方便了很多

4 文献来源

  1. IOC和DI的关系
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值