IoC就是控制反转,通俗的说就是我们不用自己创建实例对象,这些都交给Spring的Bean工厂帮助我们创建管理。Bean是IoC容器实例化,组装和管理的对象。
对于普通Java对象来说,他们的生命周期就是:
而对于Spring Bean的生命周期来说,可以分为四个阶段,当初始化完成之后,就代表这个Bean可以使用了:
Bean实例化的时机也分为两种,BeanFactory管理的Bean是在使用到Bean的时候才会实例化Bean,ApplicantContext管理的Bean在容器初始化的时候就回完成Bean实例化。
| BeanFactory | ApplicantContext |
|---|---|
| 使用懒加载 | 使用即时加载 |
| 使用的语法显式提供资源对象 | 使用创建和管理资源对象 |
| 不支持国际化 | 支持国际化 |
| 不支持基于依赖的注解 | 支持基于以来注解 |
BeanFactory和ApplicantContext的优缺点分析:
BeanFactory的优缺点:
ApplicantContext的优缺点:
简单来说BeanFactory就像相对不那么健全的原始一些的社会,而ApplicantContext是发达健全的现代社会。

创建过程:
销毁过程:
主要存在的是创建过程和销毁过程两个大方面:
创建过程: 首先实例化Bean,并设置Bean的属性,根据其实现的Aware接口设置依赖信息,接下来调用BeanPostProcess的postProcessAfterInitialization方法,完成initial前的自定义逻辑;afterPropertiesSet方法做一些属性被设定后的自定义的事情;调用Bean自身定义的init方法,去做一些初始化相关的工作;然后再调用postProcessAfterInitialization去做一些bean初始化的自定义工作,这四个方法调用类似于AOP。
此时,Bean初始化完成,可以使用这个Bean了。
销毁过程: 如果实现了DisposableBean的destroy方法,则调用它,如果实现了自定义的销毁方法,则调用之。