浏览 3645 次
锁定老帖子 主题:spring 3.0加载bean
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-05-06
最后修改:2010-05-06
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:初始化生命周期,刷新生命周期,发布事件。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-05-07
呵呵,偶也是菜鸟。
随便说两句。感觉你这个内容和标题不大搭。 你说的这些顶多算个加载bean的一个入口。具体一些的还要追一下 上面提到的obtainFreshBeanFactory postProcessBeanFactory: 这个方法的代码. 还有这句: beanfactory后处理器,不同的应用上下文设置不同的后处理器; 我觉得有待推敲。我觉得beanpostprocessor和上下文没什么关系 |
|
返回顶楼 | |
发表时间:2010-05-07
感觉LZ写的有点杂乱。
springIOC实现很重要的一个方法就是refresh |
|
返回顶楼 | |
发表时间:2010-05-08
最后修改:2010-05-08
移步至:
详解 Spring 3.0 基于 Annotation 的依赖注入实现 http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-iocannt/index.html |
|
返回顶楼 | |
发表时间:2010-05-08
jitabc 写道 移步至:
详解 Spring 3.0 基于 Annotation 的依赖注入实现 http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-iocannt/index.html 谢谢了 |
|
返回顶楼 | |