依赖注入与控制反转

1、为什么需要依赖注入
如果对象A需要调用对象B的方法,那么对象A如何获取到对象B的引用呢?最简单的办法就是new出一个新的对象出来。
但是这样的问题,是后续维护会很麻烦。

2、什么是依赖注入
把有依赖关系的类放到容器中,解析出这些类的实例,就是依赖注入。目的是实现类的解耦。
(打个比方来理解吧,我现在想玩电脑,但是我没有电脑,那么有一种方式,就是我自己组装一个电脑—相当于new一个新的对象出来,这样显然是很麻烦的。 而看看另一种方式,我直接去卖电脑的商家那里拿一台组装好的电脑,直接使用,这样岂不是更加的容易?)

3、由依赖注入出现的控制反转
同样是相当于上面玩电脑的例子,由于这里有卖电脑的商家(相当于Spring容器)的介入,依赖关系就由容器来管理,所以控制权就交给容器了。—这就是控制反转(IOC)

4、依赖注入是怎么实现的?
这里有个比较好的例子,这里写的xml文件,当Spring容器启动的时候,就会加载xml文件,然后将其中定义好的bean给加载到了容器当中,这个过程就相当于是依赖注入(原理底层好像大部分使用的是java的反射机制来实现的)。而这些类的实例对象已经保存在了容器中,相当于控制权给了别人,就称为控制反转。—大体上就是这个意思吧
依赖注入与控制反转
依赖注入与控制反转