(IoC)控制反转与(DI)依赖注入

控制反转(Inversion of Control)

控制反转即IoC (Inversion of Control),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。这种管理方式减少了对象之间的耦合性,方便测试,利于功能复用,更重要的是能使得程序整个结构便的灵活。
IoC不是一种技术,只是一种思想,它很好的体现了面向对象设计的法则之一-------------好莱坞法则:“别找我们,我们找你”。主要有两种实现方式:请看下图?

  1. 依赖查找(DL):容器提供回调接口和上下文环境的组件
  2. 依赖注入(DI):组件不做定位查询,只提供普通的Java方法让容器去决定依赖关系。

依赖查找(DL)

需要用户自己去使用的API进行查找资源和手动的组装对象。现在已经很少使用了,我们在这里不做过多介绍。

依赖注入(Dependency Injection)

依赖注入是组件之间依赖关系是由容器在运行期间决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。

依赖注入的目的:为了提升组件重用的频率、为系统搭建一个灵活、可扩展的平台。通过依赖注入机制(我们只需要通过简单的配置,而无需任何代码就可指定目标需要的资源,完成自身的业务逻辑,而不需要关心具体的资源来自何处,由谁实现。)
?边括号中的内容,不仅是依赖查找和依赖注入的区别,也是依赖注入的优势所在。

那你有没有想过为什么别人会同时提起两者?

我来告诉你吧:

  1. 两者说的都是将程序的具体操作交给spring框架去完成,只是叫法不同而已。
  2. 都削减了对象与对象之间耦合问题。
  3. 把对象生成放在了XML里定义,我们需要实现一个子类将会变成很简单(一般这样的对象都是实现于某种接口的),只要修改XML就可以了。

那有没有什么方法区别两者, 用通俗的话说就是,IoC是bean的注册,DI是bean的初始化

理解DI的关键是:“谁依赖谁,为什么需要依赖,谁注入谁,注入了什么”,那我们来深入分析一下:

  • 谁依赖于谁:当然是应用程序依赖于IoC容器;
  • 为什么需要依赖:应用程序需要IoC容器来提供对象需要的外部资源;
  • 谁注入谁:很明显是IoC容器注入应用程序某个对象,应用程序依赖的对象;
  • 注入了什么:就是注入某个对象所需要的外部资源(包括对象、资源、常量数据)

参考文章:
https://blog.csdn.net/weixin_40834464/article/details/82831157

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值