为了账号安全,请及时绑定邮箱和手机立即绑定

Spring之路(5)--IoC、DI傻傻分不清楚

标签:
Java Spring

傻傻分不清楚

很多老铁说起自己的Java水平,经常会提起,本人精通Spring,然后也熟知Spring的核心就是IoC和AOP。

然后一问啥是IoC、啥是DI,就懵了,扯不清楚到底啥是啥,还有的就认为IoC和DI就是一个事,其实还真是有点差别滴。

控制反转是啥

IoC,即Inversion of Control,翻译成中文就是控制反转,那是对啥玩意的控制反转了呢,此处专指依赖项,也就是说对依赖项的控制发生了反转。

具体说明下,正常情况是怎么控制依赖项的呢,例如:

public class Driver {
	//依赖项:姓名
	private String name;
}

我们要在Driver对象中注入String对象,实际上是需要自己创建组件,然后通过构造函数或者set方法注入到Driver中。

那么IoC控制反转的情况下,对依赖项的控制是由容器来实现的,比如Spring容器就可以通过xml配置,将name的值注入到Driver对象中。

之前是程序员控制,之后是容器控制,实际上就是控制权发生了转换,此处学者为之命名控制反转,我个人感觉叫控制转移也是OK的。

依赖注入是啥

DI,全称Dependency Injection,即依赖注入,上面说了控制反转是容器控制依赖项,那么如何将依赖项注入到组件中,有一些具体的方式,比较常用的是依赖查找和依赖注入。也就是说,依赖注入实际上是控制反转的一种具体实现方式

为了便于理解,此处稍微说明下依赖查找和依赖注入的区别:

  • 依赖查找:程序员自己去查找依赖项
  • 依赖注入:在容器中配置好依赖,容器自行装配

Spring采用的是依赖注入的方式,也是主流的方式,肯定是好处多多,这个还得等Spring用的多了才能体会到。现在理解概念就是了。

总结

说白了,如果限定死了就是Spring框架,那么说IoC和DI是一回事,也差不多,毕竟Spring的IoC就是用DI方式实现的。

但是IoC和DI确实不是一个概念,就像去太空并一定是乘飞船(也可能是航天飞机)、去北京不一定是做高铁(也可能是骑自行车)。这个比喻有点扯,将就将就吧。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
软件工程师
手记
粉丝
1.5万
获赞与收藏
1523

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消