SpringIOC源码学习总结

本文深入解析Spring框架中Bean的生命周期,从容器初始化开始,详细阐述了Bean的创建、属性注入及初始化过程。重点关注了createBeanInstance、populateBean、initializeBean等关键方法,以及aware接口、beanPostProcessors的作用。

入口方法:AnnotationConfigApplicationContext app = new AnnotationConfigApplicationContext(MyConfig.class);
初始化容器后,关注refresh()方法,该方法是synchronized修饰,所以之后都是安全的。 之后关注registerBeanPostProcessors();finishBeanFactoryInitialization(beanFactory);,前者实例化beanPostProcessors,后者实例化非lazy的singletonBan.

finishBeanFactoryInitialization(beanFactory)

重点关注beanFactory.getBean();
->createBean();->doCreateBean的时候会依次执行createBeanInstance();populateBean();initializeBean,分别是创建实例注入属性执行初始化方法

initializeBean()会先响应目标bean实现的aware接口->invokeAwareMethods.
接着applyBeanPostProcessorsBeforeInitialization以及invokeInitMethods(该方法包含initializeBean的afterPropertiesSet调用以及bean指定的initMethod方法)
然后applyBeanPostProcessorsAfterInitialization(包含得到代理对象等)
之后再设置disposable方法。
最后通过addSingleton(beanName, singletonObject);将其加入缓存。

看图比较直接:

在这里插入图片描述
在这里插入图片描述
ps: Spring 在实现其bean生命周期的同时,还实现了JSR_250定义的@PostConstruct、@PreDestory、@Resource, 其中 @PostConstruct执行实际是在afterPropertiesSet与initMehotd之前。@PreDestory 在 DisposableBean的destroy之前。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值