反转控制(IOC, Inverse of Control)
- 控制:对于成员变量赋值的控制权
- 反转控制:把对于成员变量(或对象)的控制权,从代码中反转(转移)到 Spring 工厂和配置文件中完成,好处是解耦合
- 底层实现:工厂设计模式
<aside>
💡 另一种解释:使用对象时,在程序中不要主动使用 new 产生对象,转换为由外部提供对象;创建权的转移称为控制反转
</aside>
Spring 如何实现 IoC 思想?
Spring 提供了一个容器,称为 IoC 容器,用来充当 IoC 思想的外部
<aside>
❓ 疑问
- Bean 只能有一个名字吗?
- 默认创建 Bean 是什么模式?为什么?
- 哪些 Bean 不适合交给容器管理,为什么?
- 如何看 Spring 的报错信息?
- 容器创建对象的原理?创建对象通过调用什么方法?
</aside>
依赖注入(DI, Dependency Injection)
- 注入:通过 Spring 的工厂及配置文件,为对象(Bean,组件)的成员变量赋值
- 依赖注入:当一个类需要另一个类时,就意味着依赖,一旦出现依赖,就可以把另一个类作为本类的成员变量,最终通过 Spring 配置文件进行注入(赋值)。不是概念而是方法,好处也是解耦合