Bean的生命周期
简单来说,bean的生命周期为:创建→注入→初始化→返回→销毁
一、代码过程参考
//org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean()
protected Object doCreateBean(String beanName, RootBeanDefinition mbd, @Nullable Object[] args) throws BeanCreationException {
// .............
if (instanceWrapper == null) {
// 创建bean
instanceWrapper = this.createBeanInstance(beanName, mbd, args);
}
// .............
try {
// 注入bean
this.populateBean(beanName, mbd, instanceWrapper);
// 初始化bean
exposedObject = this.initializeBean(beanName, exposedObject, mbd);
} catch (Throwable var18) {
// ............
}
// 返回bean
}
二、详细过程
1.创建bean
构造bean,相当于是new一个对象的过程
2.注入bean
通过name或者type进行注入,检查并满足依赖,设置属性值
3.初始化bean
-
注入aware接口
检查是否实现了aware接口,然后分别进行对象名的设置,类加载器的设置,beanFactory的实例引用
-
后处理器的前置处理
可以重写postProcessBeforeInitialization,在bean初始化之前进行一些处理
-
调用初始化方法
对实现了InitializingBean接口的bean执行afterPropertiesSet方法,在属性设置完成之后的处理
-
后处理器的后置处理
重写postProcessAfterInitialization,对已经初始化的bean做后续的处理
4.设置bean的管理
如果bean的作用域为singleton,则交付bean给spring的IOC容器进行管理,如果是prototype,则让调用者去管理bean的生命周期
5.返回bean
三、图示
本文来自博客园,作者:醉千灯,转载请注明原文链接:https://www.cnblogs.com/william-m/p/16245989.html