依赖注入,控制反转
定义:依赖注入与控制反转的含义相同,只不过这两个称呼是从两个角度描述的同一个概念。当某个Java对象(调用者)需要调用另一个Java对象(被调用者,即被依赖对象)时,在传统模式下,调用者通常会采用“new被调用者”的代码方式来创建对象,这种方式会导致调用者与被调用者与被调用者之间的耦合性增加,不利用后期项目的升级和维护。
在使用Spring框架之后,对象的实例不再由调用者来创建,而是由spring容器来创建,spring容器会负责控制程序之间的关系,而不是由调用者的程序代码直接控制。这样,控制权由相应的应用代码转移到了spring容器,控制器发生了反转,这就是spring的控制反转。
从spring容器的角度来看,spring容器负责将被依赖对象赋值给调用者的成员变量,这相当于为调用者注入了它依赖的实例,这就是spring的依赖注入。
我的理解:
有两个人A,B。一天A买了一堆好吃的,A说我想吃好吃的了,那么A想吃啥A就自己去拿。这是依赖注入。
另一天,B买了点好吃的A忘买了,他又想吃好吃的但是自己没有,B有,那他就跟B说,老哥我有点饿,我看你买了点那啥给我吃口呗。给B发出一个请求,B的好吃的相当于资源。这是控制反转。
使用spring容器通过student实现类中的learn方法调用了phone类中的call方法,并输出了结果。这就是spring容器属性setter注入的方式。