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

一步一步学习spring(二)——ApplicationContext和BeanFactory的区别

阅读更多
BeanFacotry是spring中比较原始的Factory。如XMLBeanFactory就是一种典型的BeanFactory。原始的BeanFactory无法支持spring的许多插件,如AOP功能、Web应用等。
   ApplicationContext接口,它由BeanFactory接口派生而来,因而提供BeanFactory所有的功能。ApplicationContext以一种更向面向框架的方式工作以及对上下文进行分层和实现继承,ApplicationContext包还提供了以下的功能:
        • MessageSource, 提供国际化的消息访问
        • 资源访问,如URL和文件
        • 事件传播
        • 载入多个(有继承关系)上下文 ,使得每一个上下文都专注于一个特定的层次,比如应用的web层

1.利用MessageSource进行国际化
   BeanFactory是不支持国际化功能的,因为BeanFactory没有扩展Spring中MessageResource接口。相反,由于ApplicationContext扩展了MessageResource接口,因而具有消息处理的能力(i18N),具体spring如何使用国际化,以后章节会详细描述。

2.强大的事件机制(Event)
   基本上牵涉到事件(Event)方面的设计,就离不开观察者模式。不明白观察者模式的朋友,最好上网了解下。因为,这种模式在java开发中是比较常用的,又是比较重要的。
ApplicationContext的事件机制主要通过ApplicationEvent和ApplicationListener这两个接口来提供的,和java swing中的事件机制一样。即当ApplicationContext中发布一个事件的时,所有扩展了ApplicationListener的Bean都将会接受到这个事件,并进行相应的处理。

Spring提供了部分内置事件,主要有以下几种:
ContextRefreshedEvent :ApplicationContext发送该事件时,表示该容器中所有的Bean都已经被装载完成,此ApplicationContext已就绪可用
ContextStartedEvent:生命周期 beans的启动信号
ContextStoppedEvent: 生命周期 beans的停止信号
ContextClosedEvent:ApplicationContext关闭事件,则context不能刷新和重启,从而所有的singleton bean全部销毁(因为singleton bean是存在容器缓存中的)

  虽然,spring提供了许多内置事件,但用户也可根据自己需要来扩展spriong中的事物。注意,要扩展的事件都要实现ApplicationEvent接口。

3.底层资源的访问
    ApplicationContext扩展了ResourceLoader(资源加载器)接口,从而可以用来加载多个Resource,而BeanFactory是没有扩展ResourceLoader

4.对Web应用的支持
   与BeanFactory通常以编程的方式被创建不同的是,ApplicationContext能以声明的方式创建,如使用ContextLoader。当然你也可以使用ApplicationContext的实现之一来以编程的方式创建ApplicationContext实例 。

5.其它区别
  1).BeanFactroy采用的是延迟加载形式来注入Bean的,即只有在使用到某个Bean时(调用getBean()),才对该Bean进行加载实例化,这样,我们就不能发现一些存在的Spring的配置问题。而ApplicationContext则相反,它是在容器启动时,一次性创建了所有的Bean。这样,在容器启动时,我们就可以发现Spring中存在的配置错误。

  2).BeanFactory和ApplicationContext都支持BeanPostProcessor、BeanFactoryPostProcessor的使用,但两者之间的区别是:BeanFactory需要手动注册,而ApplicationContext则是自动注册
4
0
分享到:
评论
2 楼 yfnok 2010-04-18  
非常不错讲的
1 楼 lyqidao 2010-03-22  
朋友希望你能加入到spring的圈子来 和大家一起分享 学习

相关推荐

    三、Spring源码分析——ApplicationContext

    《Spring源码分析——ApplicationContext》 在Java世界中,Spring框架是不可或缺的一部分,它以其强大的IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)特性,极大地...

    二、Spring源码分析——BeanFactory

    《Spring源码分析——BeanFactory》 在Java的IoC(Inversion of Control)和DI(Dependency Injection)领域,Spring框架扮演着至关重要的角色。BeanFactory是Spring的核心组件之一,它是容器的基石,负责管理应用...

    Spring————面试题库

    BeanFactory和ApplicationContext是Spring中两个重要的概念。BeanFactory可以理解为一个工厂类,它包含了bean的定义,并且能够在接收到客户端请求时将对应的bean实例化。BeanFactory还负责bean的生命周期控制,包括...

    Spring特性——Aware感知特性

    在Spring框架中,Aware接口系列是其核心特性之一,它为Spring容器提供了向bean注入上下文信息的能力。...通过阅读博文链接(已给出,但此处不再重复)和其他相关文档,你可以进一步深入学习Spring的Aware感知特性。

    Java EE 框架整合开发⼊⻔到实战——Spring+Spring MVC+MyBatis(微课版)课后习题答案.pdf

    BeanFactory提供了基础的IoC支持,而ApplicationContext是BeanFactory的子接口,为Spring应用提供配置服务,并且支持国际化和资源访问。 通过这部分内容的学习,可以了解到Spring框架如何帮助开发者从编写大量样板...

    spring-framework-4.3.3.RELEASE.rar

    3. **容器(Container)**:Spring框架包含两个主要容器——ApplicationContext和BeanFactory。它们负责创建、配置和管理Bean,以及处理Bean之间的依赖关系。 4. **数据访问**:Spring支持多种数据存储技术,包括...

    study-spring_spring_

    2. **容器**:Spring框架包含两个主要容器——ApplicationContext 和 BeanFactory。ApplicationContext 提供了更多的企业级服务,如消息源、国际化支持等,而BeanFactory 是更基础的容器,负责实例化、配置和管理...

    Spring——jar包详解

    它包含BeanFactory和ApplicationContext接口,它们是管理对象生命周期和装配的中心。 2. **Spring Beans**:这个模块主要处理bean的定义和配置,支持XML、注解和Java配置方式。 3. **Spring AOP**:面向切面编程...

    50pus6809_12_fhi_aen_spring_

    2. **容器**:Spring提供了两种容器——ApplicationContext和BeanFactory,它们负责创建、配置和管理应用中的对象,即beans。 3. **AOP**:通过AOP,开发者可以在不修改原有代码的情况下,对代码进行横向切面的增强...

    Spring官网阅读(十三)ApplicationContext详解(下)

    在本篇文章中,我们将深入探讨剩余的重要概念——BeanFactory,它是ApplicationContext的基础,同时也是Spring中管理Bean的基本接口。 BeanFactory接口是Spring的核心,它定义了一系列方法来管理和控制Bean的生命...

    精通Spring--Java轻量级架构开发实践.pdf

    4. Spring容器:了解ApplicationContext和BeanFactory,它们是Spring管理bean的主要容器。 第十章:Spring MVC——构建Web应用程序 Spring MVC是Spring框架的一个模块,专门用于构建Web应用程序。在这一章中,读者...

    Spring学习笔记+学习源码.zip

    主要有两种类型的容器:BeanFactory和ApplicationContext。 3. **面向切面编程(Aspect-Oriented Programming,AOP)**:Spring AOP允许开发者定义“切面”——跨越多个类的行为或责任。通过切点(Pointcut)和通知...

    java——spring

    Spring框架包含两种主要容器:ApplicationContext 和 BeanFactory。ApplicationContext 是更高级别的容器,提供了更多的企业级功能,如消息支持和国际化。BeanFactory 是基本的容器,负责创建、配置和管理bean。 3...

    Spring总结——Spring容器、Spring中的IoC

    文章目录Spring总结Spring容器控制反转(IoC)基于XML的IoC Spring总结 Spring容器 什么是Spring容器 从概念上讲:Spring 容器是 Spring框架的核心,是用来管理对象的...Spring最基本的接口就是BeanFactory, BeanFac

    Spring学习笔记,精华摘要

    bean的管理者——Spring容器,有两个主要接口:BeanFactory和ApplicationContext。BeanFactory是最基础的接口,负责bean的配置、创建和管理,而ApplicationContext提供了更多的企业级服务,如国际化、事件发布等。...

    spring特点和原理.学习笔记

    在IoC模式下,对象的创建和装配不再由对象自身负责,而是由一个外部容器(在Spring中就是ApplicationContext或BeanFactory)来完成。这种模式有以下几个关键点: 1. **Bean工厂**:在Spring中,Bean工厂是实现IoC的...

    Spring有关资料 源码

    3. **Bean管理**:Spring容器(ApplicationContext或BeanFactory)负责管理Bean的生命周期,包括实例化、初始化、装配和销毁。Bean可以通过XML、注解或Java配置进行定义。 4. **IoC容器**:IoC(Inversion of ...

    关于Spring的69个面试问答——终极列表

    4. **应用上下文(ApplicationContext)**:ApplicationContext是BeanFactory的扩展,提供了更多的企业级服务,如消息源、国际化和事件传播。它是Spring作为容器角色的主要体现,可以加载bean定义并管理它们。 5. *...

Global site tag (gtag.js) - Google Analytics