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:初始化生命周期,刷新生命周期,发布事件。

你可能感兴趣的:(spring,bean,OS,IBM,OpenSource)