`
ordinary
  • 浏览: 77587 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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:初始化生命周期,刷新生命周期,发布事件。
分享到:
评论
4 楼 ordinary 2010-05-08  
jitabc 写道
移步至:
详解 Spring 3.0 基于 Annotation 的依赖注入实现
http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-iocannt/index.html

谢谢了
3 楼 jitabc 2010-05-08  
移步至:
详解 Spring 3.0 基于 Annotation 的依赖注入实现
http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-iocannt/index.html
2 楼 hanwesley 2010-05-07  
感觉LZ写的有点杂乱。
springIOC实现很重要的一个方法就是refresh
1 楼 michael.softtech 2010-05-07  
呵呵,偶也是菜鸟。
随便说两句。感觉你这个内容和标题不大搭。
你说的这些顶多算个加载bean的一个入口。具体一些的还要追一下
上面提到的obtainFreshBeanFactory postProcessBeanFactory: 这个方法的代码.

还有这句:
    beanfactory后处理器,不同的应用上下文设置不同的后处理器;
我觉得有待推敲。我觉得beanpostprocessor和上下文没什么关系

相关推荐

    mybatis-spring-1.2.2.jar

    那么,我们就想将 MyBatis3 的支持添加 到 Spring3.0(参考 Spring Jira 中的问题)中。而不幸的是,Spring 3.0 的开发在 MyBatis 3.0 官方发布前就结束了。 因为 Spring 开发团队不想发布一个基于非发布版的 MyBatis 的...

    springweb3.0MVC注解(附实例)

    -- Spring MVC 的Servlet,它将加载WEB-INF/annomvc-servlet.xml 的 配置文件, 以启动Spring MVC模块--> <servlet-name>annomvc org.springframework.web.servlet.DispatcherServlet <load-on-startup>2 ...

    Spring.3.x企业应用开发实战(完整版).part2

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

    Spring3.x企业应用开发实战(完整版) part1

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

    Spring攻略(第二版 中文高清版).part1

    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 ...

    Spring攻略(第二版 中文高清版).part2

    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 ...

    Spring AOP配置源码

    @Component("userService")等价于在spring配置文件中定义一个<bean id="userService"/> @Resource(name="userDAO")将userDA注入进来 写一个拦截器的类 package com.spring.aop; import org.springframework....

    ssh(structs,spring,hibernate)框架中的上传下载

     需要指定的是Spring 1.2.5提供了两套Hibernate的支持包,其中Hibernate 2相关的封装类位于org.springframework.orm.hibernate2.*包中,而Hibernate 3.0的封装类位于org.springframework.orm.hibernate3.*包中,...

    spring学习笔记

    ..............................................................................................................9 1.3.7Spring 框架加载配置文件:..............................................................

    J2EE应用开发详解

    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事务...

    cms后台管理

    一 Jeecms安装过程 将解压后得到的jeecms-...<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="freemarkerVariables"> <map> …… ...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。 为了增加系统的...

Global site tag (gtag.js) - Google Analytics