什么是 IoC
- 控制反转,是一种思想,不是一种实现。Java 领域中描述的是对象的创建和管理的问题。
- 传统开发,A 中要使用 B 的对象,需要在 A 中 new 出 B 的对象
- IoC 思想实现:不通过 new 关键字来创建对象,而是通过 IoC 容器( Spring 框架) 来帮助我们实例化对象。我们需要哪个对象,直接从 IoC 容器里面获取即可。
- 控制 :指的是对象创建(实例化、管理)的权力
- 反转 :控制权交给外部环境(Spring 框架、IoC 容器)
- IoC 容器实际上就是个 Map(key,value),Map 中存放的是各种对象。
IoC 解决了什么问题
IoC 的思想就是两方之间不互相依赖,由第三方容器来管理相关资源。这样有什么好处呢?
- 对象之间的耦合度或者说依赖程度降低;
- 资源变的容易管理;比如你用 Spring 容器提供的话很容易就可以实现一个单例。
DI(依赖注入)Dependency Injection
是Ioc的一种实现方式,3种方式
- 构造器注入
- 有参构造
- setter方法注入
- 接口注入
Spring IOC的初始化过程:
- 首先初始化上下文,生成
ClassPathXmlApplicationContext
对象 - 再获取
resourcePatternResolver
对象将xml
解析成Resource
对象。 - 利用1生成的
context
、resource
初始化工厂,并将resource
解析成beandefinition
- 再将
beandefinition
注册到beanfactory
中。