最近在公司弄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-06 11:47
- 浏览 1670
- 评论(4)
- 论坛回复 / 浏览 (4 / 3625)
- 查看更多
相关推荐
那么,我们就想将 MyBatis3 的支持添加 到 Spring3.0(参考 Spring Jira 中的问题)中。而不幸的是,Spring 3.0 的开发在 MyBatis 3.0 官方发布前就结束了。 因为 Spring 开发团队不想发布一个基于非发布版的 MyBatis 的...
-- Spring MVC 的Servlet,它将加载WEB-INF/annomvc-servlet.xml 的 配置文件, 以启动Spring MVC模块--> <servlet-name>annomvc org.springframework.web.servlet.DispatcherServlet <load-on-startup>2 ...
Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...
Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...
1.2 配置Spring IoC容器中的Bean 4 1.2.1 问题 4 1.2.2 解决方案 4 1.2.3 工作原理 4 1.3 调用构造程序创建Bean 14 1.3.1 问题 14 1.3.2 解决方案 14 1.3.3 工作原理 14 1.4 解决构造程序歧义 17 ...
1.2 配置Spring IoC容器中的Bean 4 1.2.1 问题 4 1.2.2 解决方案 4 1.2.3 工作原理 4 1.3 调用构造程序创建Bean 14 1.3.1 问题 14 1.3.2 解决方案 14 1.3.3 工作原理 14 1.4 解决构造程序歧义 17 ...
@Component("userService")等价于在spring配置文件中定义一个<bean id="userService"/> @Resource(name="userDAO")将userDA注入进来 写一个拦截器的类 package com.spring.aop; import org.springframework....
需要指定的是Spring 1.2.5提供了两套Hibernate的支持包,其中Hibernate 2相关的封装类位于org.springframework.orm.hibernate2.*包中,而Hibernate 3.0的封装类位于org.springframework.orm.hibernate3.*包中,...
..............................................................................................................9 1.3.7Spring 框架加载配置文件:..............................................................
199 11.5.1 JMS 200 11.5.2 消息驱动Bean的生命周期 202 11.5.3 创建消息驱动Bean 202 11.6 实体Bean 203 11.6.1 实体Bean的特性 204 11.6.2 实体Bean的分类及组成 204 11.6.3 EJB 3.0中的实体Bean 206 11.7 EJB事务...
一 Jeecms安装过程 将解压后得到的jeecms-...<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="freemarkerVariables"> <map> …… ...
由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。 为了增加系统的...