1.控制反转
(1)没有控制反转的情况下
常规思路下,也就是在没有控制反转的情况下,程序员需要通过编写应用程序来创建(new关键字)和使用对象。
(2)存在控制反转的情况下
控制反转主要是针对对象的创建和调用控制而言的。
应用程序需要使用一个对象时,不再是由程序员写的应用程序通过new关键字来直接创建该对象,而是由 Spring IoC 容器来创建和管理,即创建和管理对象的控制权由应用程序转移到 IoC 容器。
我们的应用程序需要使用到某个组件对象时,只需要从Spring IoC容器中取出来使用即可。
2.依赖注入
依赖注入是指在组件对象之间传递依赖关系的过程中,将依赖关系在容器内部进行处理,这样就不必在应用程序代码中硬编码对象之间的依赖关系,实现了对象之间的解耦合。
从上图我们可以发现组件b对象是在组件a对象内部的,这种关系就是Spring所说的依赖注入,即完成组件a对象对组件b对象的引用。
在 Spring 中,依赖注入是通过 XML 配置文件或注解的方式实现的。它提供了三种形式的依赖注入:构造函数注入、Setter 方法注入和接口注入。