Spring学习之——两个神秘概念

学习Spring的人开始都会被两个概念搞得晕头转向,也被很多宣传Spring的刻画的很神秘,其实,我非常讨厌那些摆弄一些高级概念而故弄玄虚的人。我到现在扔非常赞同,我大学时代一位老师说的一句话:技术没有什么高深的,只是你比别人先知道。当你真正的理解之后就会发现,不过尔尔,就像那扇虚掩的门一样。虽说本人之前也了解过Spring框架的一些知识,真正准备从头认真的学习,这还是第一次,所以有些观点和理解可能显得肤浅,欢迎有不同观点的网友批评指正。但是对技术的学习我一直深受上面提到那位老师的那句话的影响,向来不认为技术有什么特别神秘的东西,下面我们来认识一下这两个被很多人奉上神龛的概念:

1.IoC其是Inversion of Contorl的缩写
2.DI其是Dependency Injection的缩写,依赖注入
通过我们前面的简单示例程序,结合上面的两个概念,大家是不是对Spring框架有种很接近但又无法言语的体会呢。从字面上理解,我们的第一个示例好像有点这个感觉,msg的值依赖配置文件注入是吧。但是如果仅仅是这么理解是有点狭隘的,这里暂时先不解释为什么狭隘。第一个概念Ioc我之所以没有写出中文翻译,原因是,我在学习的时候查了很多资料它的翻译有很多版本如“反向控制”,“控制反转”等。虽然体现了其英文的意思,但是都很难理解。比如:如果你要理解什么是“反向控制”,你总要知道什么是正向控制吧,这样对比才好理解是吧,那什么是正向呢,但是看了很多资料也没有人解答什么叫正向控制。IoC是如此的不好理解以至于在一段时间内引发了一场讨论,后来据说一个大师级的人物,发表了一篇文章《Inversion of Control Containers and the Dependency Injection pattern》来说明这个概念,这场大的讨论也因此结束,在这篇文章里他提到了一个新的概念这个也在标题里体现了,就是DI(Dependency Injection)依赖注入。我们很多初学者在看Spring相关资料的时候都搞不明白为什么资料里面说的IoC又可以叫做DI,这两个看上去差别很大的词汇怎么会有同样的含义呢,这就是那位大师的功劳啦。其实说白了IoC,就是由容器控制程序之间的关系,我们之前的程序之间的关系都是通过程序之间的代码逻辑来体现的,它将这种由代码来控制的程序关系,转移到了容器中这个所谓的容器就是Spring框架了。所以很多书翻译成“反向控制”或是“控制反转”难理解的其实就是这个“反向”,“反转”。我们前面讨论过要理解什么是“反向”,就要搞清楚什么是正向,很多资料没有明确的说,这里正向应该就像我们说的没使用Spring之前的程序间的关系它由程序控制的,所以由Spring容器控制的就成了反向了,也就说是程序关系的控制权由应用代码转移到了外部容器中即由Spring来控制,控制权的转移,是所谓的“反转”,这样是不是好理解了呢。那为什么又可以叫做依赖注入呢,我们前面提到了控制程序关系的问题,其实Spring的控制就是通过框架将这种关系注入到程序中,所以我前面提到的依据第一个示例将依赖注入的理解成值得注入是狭隘就是因为依赖注入其实注入的是一种程序间的关系。至于有人说DI的说法比IoC更好,我认为这肯定是受了大师的影响,我没读过大师的那篇文章,我的理解是如果站在Spring的角度来说,即所有要控制的程序关系通过Spring来注入,依赖注入的说法确实更为贴切。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值