bean的生命周期

93 阅读1分钟

8878c9d3d7f69a703843f9dd621723a.png

扩展描述

1、实例化bean:反射的方式生成对象

2填充bean的属性:populateBean()循环依赖的问题(三级缓存)

3、调用aware接口相关的方法:invokeAwareMethod(完成BeanNameBeanFactoryBeanClassLoader对象的属性设置)

4、调用BeanPostProcessor中的前置处理方法:使用比较多的有(ApplicationContextPostProcessor,设置 ApplicationContextEnvironmentResourceLoaderEmbeddValueResolver等对象)

5、调用initmethod方法:invokelnitmethod()判断是否实现了initializingBean接口,如果有,调用afterPropertiesSet方法,没有就不调用

6、调用BeanPostProcessor的后置处理方法:spring的aop就是在此处实现的,AbstractAutoProxyCreator 注册Destuction相关的回调接口 I

7获取到完整的对象,可以通过getBean的方式来进行对象的获取

8、销毁流程,1:判断是否实现了DispoableBean接口,2,调用destrovMethod方法