最近在公司弄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
- 浏览 1709
- 评论(4)
- 论坛回复 / 浏览 (4 / 3646)
- 查看更多
相关推荐
对于多语言应用,Spring 3.0增强了本地化处理,提供更灵活的资源加载策略。 在“lib”文件夹中,可能包含了Spring 3.0所需的一系列jar包,如spring-context、spring-beans、spring-webmvc等,这些jar包分别对应...
1. **Bean表达式语言(Bean Expression Language, BEML)**:Spring 3.0引入了基于Groovy的表达式语言,允许在配置中进行更复杂的逻辑判断和属性设置。 2. **泛型注解支持**:Spring 3.0开始支持泛型类型的注解,使...
7. **JSR-303/JSR-349 Bean Validation**:Spring 3.0集成了Bean Validation标准,允许开发者为模型对象定义验证规则,增强了数据校验的能力。 8. **国际化**:Spring 3.0支持国际化,通过ResourceBundle和...
本篇将详细讲解如何在Spring 3.0的配置文件中加载Properties文件,以便在运行时动态获取和使用这些配置。 首先,我们需要一个Properties文件,例如`application.properties`,它通常放在项目的类路径根目录下。这个...
2. **JSR-303 Bean Validation集成**:Spring 3.0支持Java Bean Validation规范,通过JSR-303注解可以对对象属性进行验证,提供了一种声明式的方式,增强了业务逻辑的安全性。 3. **Expression Language (SpEL)**:...
同时,Spring 3.0加强了对JSR-303(Java Bean Validation)的支持,提供了数据验证功能,使验证规则可以直接在模型对象上定义,简化了业务逻辑。 在AOP(面向切面编程)方面,Spring 3.0提供了更灵活的切入点表达式...
2. **Spring Expression Language (SpEL)**: 引入了一个新的表达式语言——Spring Expression Language,可以用于定义基于XML和注解的Bean定义。 3. **REST Web服务支持**: Spring 3.0支持RESTful Web服务的开发,...
至于“spring3.0-lib”这个压缩包,很可能包含了Spring 3.0所有必要的JAR文件,包括上述各个模块的实现。在使用时,开发者需要根据项目需求选择合适的JAR添加到类路径中。为了确保项目运行正常,应仔细检查包含的JAR...
这些组件的结合使得Spring 3.0成为一个功能强大的开发框架,涵盖了从基本的bean管理到复杂的Web应用和持久层操作的多个方面。通过依赖注入、AOP和其他设计模式,Spring帮助开发者创建松散耦合、可测试和易于维护的...
Spring 3.0是Spring框架的一个重大更新,引入了许多新特性和改进,如支持JSR-303 Bean Validation,对AspectJ注解的支持增强,以及对RESTful Web服务的全面支持等。这些特性使得Spring 3.0成为构建复杂应用程序的...
ApplicationContext是Spring中的核心接口,它提供了加载bean定义、管理bean生命周期以及提供bean之间的依赖注入的能力。此外,还包含了事件传播、国际化支持以及资源访问等功能。 2. **spring-beans-3.1.4.RELEASE....
这个"spring3.0最新lib包"包含了Spring框架的不同模块,每个模块都有独立的JAR文件,允许开发者根据实际项目需求来选择和引入必要的依赖,而不是一次性加载整个大的spring.jar,这大大减小了应用的体积并提高了性能...
8. **国际化(Internationalization, i18n)**:Spring 3.0支持多语言环境,`MessageSource`接口和`ResourceBundleMessageSource`类用于加载和解析消息源。 通过阅读Spring 3.0的源码,我们可以深入了解Spring是...
Spring 3.0是Spring框架的一个重要版本,它引入了许多新特性和改进,极大地提升了开发效率和灵活性。XSD(XML Schema Definition)文件在Spring框架中扮演着核心角色,它们定义了Spring配置文件的结构和规则,使得...
### Spring 3.0 整合 iBatis 3 的实践与配置 #### 一、背景介绍 在软件开发过程中,经常会遇到需要整合多种技术框架的情况。本文将详细介绍如何将 Spring 3.0 与 iBatis 3 进行整合。尽管作者提到 iBatis 3 在当时...
这个"spring3.0的最新官方例子源码spring-samples"压缩包包含的是Spring官方提供的示例代码,旨在帮助开发者理解和学习如何在实际项目中应用Spring框架。以下是对这些源码的详细解析: 1. **依赖注入(Dependency ...
Spring 3.0 XSD 文件是Spring框架在3.0版本中使用的XML Schema定义文件,它们主要用于配置Spring框架的应用上下文和服务。XSD文件的作用在于为XML配置提供结构化约束和验证,确保开发者遵循正确的格式编写配置。在...
### Spring3.0MVC框架概述 Spring3.0MVC是Spring框架的Web模块,专为构建高效、可扩展的Web应用程序而设计。它不仅提供了丰富的功能来满足Web开发的需求,还具备高度的可配置性和灵活性,能够无缝集成到现有的Web...
在3.0版本中,Spring AOP(面向切面编程)对AspectJ的支持进一步加强,包括编译时编织(CTW)和加载时编织(LTW)。这使得开发者可以更方便地使用AspectJ来定义和执行切面,提高代码的整洁度和可复用性。 5. **...