论坛首页 入门技术论坛

spring 3.0加载bean

浏览 3645 次
该帖已经被评为新手帖
作者 正文
   发表时间:2010-05-06   最后修改:2010-05-06
     最近在公司弄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:初始化生命周期,刷新生命周期,发布事件。
   发表时间:2010-05-07  
呵呵,偶也是菜鸟。
随便说两句。感觉你这个内容和标题不大搭。
你说的这些顶多算个加载bean的一个入口。具体一些的还要追一下
上面提到的obtainFreshBeanFactory postProcessBeanFactory: 这个方法的代码.

还有这句:
    beanfactory后处理器,不同的应用上下文设置不同的后处理器;
我觉得有待推敲。我觉得beanpostprocessor和上下文没什么关系
1 请登录后投票
   发表时间:2010-05-07  
感觉LZ写的有点杂乱。
springIOC实现很重要的一个方法就是refresh
0 请登录后投票
   发表时间:2010-05-08   最后修改:2010-05-08
移步至:
详解 Spring 3.0 基于 Annotation 的依赖注入实现
http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-iocannt/index.html
0 请登录后投票
   发表时间:2010-05-08  
jitabc 写道
移步至:
详解 Spring 3.0 基于 Annotation 的依赖注入实现
http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-iocannt/index.html

谢谢了
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics