Spring中Bean的生命周期
任何对象的生命周期都离不开实例化
, 使用
, 销毁
这三个步骤。
Spirng中的Bean的生命周期也是如此,不过Spring给Bean的生命周期增加了很多的拓展点,供用户去使用,下面来具体介绍一下。
1.创建对象
Spring去读取指定的配置文件或者解析注解来获取Bean的定义信息,在容器内部生成BeanDefinition,经过一些BeanFactoryPostProcessor来处理这些信息,比如把文件中的${jdbc.username}
这种表达式解析成具体的值,有了BeanDefinition之后,再通过反射
的方式去创建这个对象。
2.依赖注入
Spring在容器中寻找这个Bean所依赖的其他对象,将其引用填充到这个对象的成员变量。
3.Aware相关接口
在第二步依赖注入的时候,只会注入一些普通的对象,并不能注入像ApplicationContext
、BeanFactory
、BeanName
这些对象,这种对象必须通过实现相关的Aware接口来注入。
4. BeanPostProcessor前置方法
在这里会开始真正的初始化,会先调用BeanPostProcessor的前置方法。
5. 调用初始化方法
调用一系列的初始化方法,执行用户指定的初始化方法,通过init-method
这个属性配置。如果这个类实现了initializingBean接口的话,还回去调用afterPropertySet()方法。
6. BeanPostProcessor后置方法
执行完这个方法,Bean就算真正的创建完毕了,Spring的Aop也是通过这个方法来实现的,会为这个对象创建一个代理的对象,并将这个对象放进容器中。后面就是使用对象,最后销毁对象了。