
看图说话
- 实例化bean:反射的方式创建bean
- 填充bean属性:
populateBean(),循环依赖的问题(三级缓存) - 调用aware接口相关的方法:invokeAwareMethod(),完成
BeanName,BeanClassLoader,BeanFactory对象的属性设置 - 调用BeanPostProcessor中的前置处理方法:使用比较多的有(ApplicationContextPostProcessor,设置
Environment,EmbeddedValueResolver,ResourceLoader,ApplicationEventPublisher,MessageSource,ApplicationContext,ServletContext等对象) - 调用initmethod方法:
invokeInitmethod(),判断是否实现了initializingBean接口,如果有,调用afterPropertiesSet方法,没有就不调用 - 调用
BeanPostProcessor的后置处理方法:spring的aop就是在此处实现的,AbstractAutoProxyCreator;注册Destuction相关的回调接口 - 获取到完整的对象,可以通过
getBean的方式来进行对象的获取 - 销毁流程,1,判断是否实现了
DispoableBean接口 2,调用destroyMethod()方法
这篇博客深入探讨了Spring框架中Bean的生命周期,从实例化、属性填充、调用Aware接口、BeanPostProcessor处理到初始化方法的执行,再到最终的销毁流程。重点讲解了每个阶段的关键步骤,如反射创建Bean、解决循环依赖、AOP代理的实现以及DisposableBean接口的销毁方法。
1万+

被折叠的 条评论
为什么被折叠?



