本文参考的博文
正转:
要讲反转,先得说清楚什么是正转。
要说清楚什么是正转,还要搞清楚什么是控制。
那么控制是什么?当然是一个角色A对另外一个角色B的行为和数据的按照A的原则或是意志进行的有目的行的干涉和施加影响,从而使得符合或是达到A的控制目的。也就是说A控制了B或是B的行为由A来控制。
那么谁是A谁是B?在java中一切都是对象,如果一个对象需要另外一个对象的功能,那么这个对象就是A,另一个对象就是B。那么具体的A是怎么控制B的?首先A要创建一个对象B并且对其引用,还要获取或是设置B的对象属性、调用B的方法,有时候也需要销毁B,也就是说B对象的整个从产生到使用再到销毁都是由A来完成!那为什么由A来完成呢?因为A需要B,A依赖B,B始终难逃A的控制,这带来的后果就是严重耦合,对程序的维护和扩展的影响不言而喻。总结:在A使用B的过程中,A都是亲力亲为,十分主动,我们知道太主动会伤了自己影响大局。那能不能化主动为被动呢? 当然可以,请下看。
反转
如果A将对B的控制权或是管理权交出来给别人,让更专业的人去管理B,自己按需索取B,这不是更好?当A需要B的时候,把B自动扔给A,化主动为被动,以前主动索取,现在是被动接受,只使用不做维护。那么由主动变被动的过程怎么实现呢?这就是Spring的要做的,用好莱坞法则就是:你不要来找我,我回去找你。以前是我得主动去找你,现在你等着就行,我来找你,这个就是控制反转的概念,这个过程由spring来实现。