【角度刁钻】大话Spring IoC

导语

本文意用白话文说清楚IOC是什么,只说基本思路,不涉及源码。没有什么高深的技术和理论,纯当讲个笑话。如果有技术大牛看完觉得某些地方逻辑不妥可以告知,鄙人加以改正。

什么是IoC

IoC(Inversion of Control)是面向对象编程中的一种编程思想(或理论),多称作“控制反转”,旨在降低代码之间的耦合度。

那么控制反转到底反转了什么?怎么反转的?与传统的new对象相比,是主动去创建依赖对象,而IoC是问你需要什么,然后塞给你,所以它也有一种称呼叫“依赖注入(Dependency Injection)”。

这就像你上学的时候找对象一样,你喜欢什么类型的,然后就去找什么类型的姑娘谈恋爱,这就叫正转,我依赖的对象都由自己来控制。

结果你不珍惜学校的时光,毕业了到了结婚的年纪,家里经常催你结婚,现在连个对象都没有怎么结婚。怎么办?找个媒婆吧,然后你把自己的条件跟媒婆说了,告诉想找个啥类型的,长得漂亮的,身材好的等等各种要求。

这个时候如果婚介所有符合你的期望类型的,会给你打电话,见个面不啥的。这个过程呢其实就可以称为反转。

所以,反转了什么?反转了对依赖对象的控制权,从主动变成了被动。如何反转的?将依赖的控制权交给了框架去处理。

IoC基本实现

IoC其实就类似于媒婆,可能这个比喻不是很恰当。

生活在农村的小伙伴应该见识过媒婆的厉害之处,方圆几里的大大小小的村子,谁家有适婚年龄的女子,哪里有适婚年龄的小伙儿,这些情况都了如指掌。

每次过年过节的都会上门去,问问有没有对象、找不找对象、想找个啥样儿的等等。请问,他这是在做什么?这是收集信息对吧。收集信息是作为媒介的第一步,我得掌握哥哥妹妹的基本情况,我才能精准推送。

首先,问你基本情况,家住哪里、几亩田、有车有房吗,这是对一个人的基本定义。

其次,问你想找个啥类型的,这是掌握你所想得到的。

最后,在给你介绍之前找一个合适的介绍给你,这是在给你介绍想要的。

不管这个比喻是否合适,但基本思路应该就是如此。

Spring中IoC的实现

1.初始化IoC容器。这就好像是来了个媒婆。

2.加载Bean的定义。媒婆来家里询问情况了,小孩儿长的不赖啊,家里情况也好。

3.注册Bean的后置处理器(BeanPostProcessor),这个后置处理器是用于拦截Bean初始化的。这个就像媒婆要给你介绍之前看你需不需要,需要啥样的。

4.实例化Bean(实例化单例Bean)。媒婆要给你介绍了,这个时候就需要了解你的需求,开始调用后置处理器,分析你想要什么样的。

5.装配Bean,找到合适的了,给你介绍介绍。之后就你俩的事了,安排见面啥的吧。

总结

在spring中IoC大致流程就是上面的样子,但是细节方面还是比较多的。用一个比喻是为了让逻辑上更容易理解,但是有可能在比喻上没有那么生动,所以也不要被这个比喻刻板化。有时间还是希望可以自己跟一下源码,再捋一下思路。准备下篇从代码方面再写一下IoC的流程。

鄙人不才,还请各位大神倾囊相授啊

你可能感兴趣的:(【角度刁钻】大话Spring IoC)