spring 3.0加载bean

最近在公司弄spring升级,大概看了下spring3.0加载bean的代码,给自己总结下,有啥不妥,希望大牛指点。
spring加载bean主要在AbstractApplicationContext中的refresh()方法中实现,大概加载的流程如下:

prepareRefresh();//刷新前处理

ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();//初始化beanFactory

prepareBeanFactory(beanFactory);//在应用上下文中准备beanfactory

postProcessBeanFactory(beanFactory);//beanfactory前处理

invokeBeanFactoryPostProcessors(beanFactory);//调用工厂后处理

registerBeanPostProcessors(beanFactory);//注册工厂后处理

initMessageSource();//初始化消息

initApplicationEventMulticaster();//初始化应用上下文事件广播器

onRefresh();//特殊bean的刷新

registerListeners();//注册监听器

finishBeanFactoryInitialization(beanFactory);//完成beanfactory的初始化

finishRefresh();//结束刷新

说明:

prepareRefresh:设置当前应用上下文为激活状态;

obtainFreshBeanFactory:刷新beanfactory,获取beanfactory;

prepareBeanFactory:设置classload,设置表达式解析器,设置属性编辑器(去掉了color解析器),添加 beanfactory后处理器。,添加解析器;

postProcessBeanFactory:beanfactory后处理器,不同的应用上下文设置不同的后处理器;

invokeBeanFactoryPostProcessors:调用beanfactory定义注册后解析器,调用beanfactory处理器,获得beanfactory后置处理器并分类,分别调用;

registerBeanPostProcessors:仿照invokeBeanFactoryPostProcessors注册beanfactory后处理器;

initApplicationEventMulticaster();初始化应用上下文事件广播器;

registerListeners:把上下文事件添加到上下文事件广播器中;

finishBeanFactoryInitialization:实例化所有非延迟加载的单例;

finishRefresh:初始化生命周期,刷新生命周期,发布事件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值