当你开始想去学spring,不管你是去看官方文档还是去听别人的教学,都不可避免的要遇到这么一个概念-控制反转。有时候有个完全不知道什么意思的词出现真的挺败学习兴趣的是吧,反正我是这样,因为控制反转我不知道啥意思,所有这个课摸了一学期的鱼。但是天道好轮回,苍天放过谁,最后我还是要自己学。
关于控制反转,相信大家一定听过这个词-两级反转。两级反转呢是关于两个点或者面互换位置对吧,控制反转也差不多,就是控制权的转移,有控制权反转为没有控制权。
来吧,我们举个栗子。假如你是个南方人,大夏天的天气超级热,所以你自己扇起了扇子,用编程思想来说这是什么?这就是一个person类调用了自己的一个fan方法。但是我们总是类要保证他的单一性 要保证低耦合,而且要扇子又类效果又差,所以你买了台电风扇,只要按一下启动钮,你就坐着吹风就行了,这是什么,这是person类new了一个fan类,并调用了它的open方法,这个时候你依然有控制权。好吧,现在你发达了,买了大房子,还安装了智能管家和配套的智能家居,现在你只要说一声开启空调,空调就自动打开了,到这里,控制反转出现了,你还拥有空调的控制权嘛?看起来空调是你打开的,其实不是你打开的 你只是下了一个指令,是智能管家打开的空调。于此同时,你可以跟智能管家说打开电视机,窗帘,灯光等等一切它支持的东西,而你的控制权实际上已经转移给了智能管家。
这个就是控制反转,智能管家就相当于spring框架,各种家居就相当于各种类,你就是用户,控制权从使用者转移给了智能管家,从用户转移给了spring框架,这就是控制反转。
而使用xml文件配置,就等于你买来新家电接入智能管家的存储系统。而后你需要什么类不再需要你控制,你只需要向框架传递一个参数,框架会自动为你打开。控制反转就是这么简单。