IOC
在没有spring的时候要使用对象,必须先要new一个对象,类之间的相互调用方法,也要自己创建对象和装配,而现有创建和装配对象都交给spring容器去完成,使用者只需要去spring容器中拿要使用的对象即可,这个过程对象的控制就被反转了,之前是使用者控制,现在交给了spring容器,对象的创建过程被反转了,所以叫做控制反转
IOC是面向对象设计的一中思想,降低系统代码耦合
DI
之前说了,spring容器帮我们创建好对象的实例,那我们怎么获得这个实例呢,调用者通过 Spring容器获得被调用者实例,这就是依赖注入
spring容器
spring容器是管理一系列对象的清单的容器,也称为IOC容器,主要的功能有:
- 对象实例化
- 对象初始化
- 对象之间的依赖关系配置
- 对象的销毁
- 对外提供对象的查找
- 。。
对象的整个生命周期都是由容器来控制的。
那spring 容器需要知道他要管理那些对象呢,我们在springboot中使用的注解大多数都是把对象交给了容器,比如说:
- @Configuration 定义配置类
- @Bean 下面说明
- @Service
- @Controller
- @Component
Bean
由spring容器管理的对象统称为Bean对象
BeanFactory 可了解
这是一个最简单的容器,它主要的功能是为依赖注入 (DI) 提供支持,这个容器接口在 org.springframework.beans.factory.BeanFactory中被定义
例子
AbstractApplicationContext
Application Context 是 BeanFactory 的子接口,也被称为 Spring 上下文。
Application Context 是 spring 中较高级的容器。和 BeanFactory 类似,它可以加载配置文件中定义的 bean,将所有的 bean 集中在一起,当有请求的时候分配 bean