`
隐形的翅膀
  • 浏览: 497360 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

BeanFactory and ApplicationContext

阅读更多
BeanFactory 还是 ApplicationContext?
简单的说:除非你有更好的理由,否则尽量使用ApplicationContext,下面是对于哪些"为什么"等等更深入的建议

ApplicationContext包含BeanFactory的所有功能。通常建议比BeanFactory优先,除非有一些限制的场合如字节长度对内存有很大的影响时(Applet)。然后,绝大多数"典型的"企业应用和系统,ApplicationContext就是你需要使用的。Spring2.0及以上版本,大量使用了link linkend="beans-factory-extension-bpp">BeanPostProcessor扩展(以便应用代理等功能),如果你选择BeanFactory则无法使用相当多的支持功能,如事务和AOP,这可能会导致混乱,因为配置并没有错误。

下面的功能矩阵列出了BeanFactory提供的功能和ApplicationContext提供的功能(包括其实现)。(下一节更深度的描述了ApplicationContext比BeanFactory更强的功能。)

表 3.5. Feature Matrix特性表

特性                                                   BeanFactory   ApplicationContext
Bean 实例化/装配                                Yes                 Yes

自动 BeanPostProcessor 注册             No                  Yes

自动 BeanFactoryPostProcessor 注册  No                  Yes

便捷的 MessageSource 访问( i18n)      No                  Yes

ApplicationEvent 发送                         No                  Yes

import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;

public class XmlConfigWithBeanFactory {

    public static void main(String[] args) {
        XmlBeanFactory factory = new XmlBeanFactory(new FileSystemResource(
                "build/beans.xml"));

    }
}


public class XmlConfigWithApplication{

    public static void main(String[] args){
        ApplicationContext application = new ClassPathXmlApplicationContext(beans.xml"));
         application.getBean("BeanName");
    }
}

  ApplicationContext和BeanFacotry相比,提供了更多的扩展功能,但其主要区别在于后者是延迟加载,如果Bean的某一个属性没有注入,BeanFacotry加载后,直至第一次使用调用getBean方法才会抛出异常;而ApplicationContext则在初始化自身是检验,这样有利于检查所依赖属性是否注入;所以通常情况下我们选择使用ApplicationContext.
分享到:
评论

相关推荐

    中软Spring_PPT

    其中,核心容器是Spring的基础,主要包括BeanFactory和ApplicationContext,它们实现了控制反转(IOC)和依赖注入(DI)。 【控制反转(IOC)和依赖注入(DI)】 控制反转(IOC)是一种设计思想,意味着将对象的...

    Spring开发指南

    - **综合使用BeanFactory与ApplicationContext**:在实际项目中,通常会结合使用BeanFactory和ApplicationContext。前者更多地用于底层的IoC容器管理,后者则用于更高级别的应用程序上下文配置。 #### 六、结论 - ...

    基于Spring框架的开发最佳实践.pdf

    包括使用Spring Data进行MongoDB 4.0事务处理、构建message-driven微服务、Spring Boot配置、前端集成、日志管理、WebFlux错误处理以及BeanFactory和ApplicationContext的区别等。以下是对这些知识点的详细说明: 1...

    spring-reference.pdf

    - **BeanFactoryAware and ApplicationContextAware**:类似的接口,允许Bean获取BeanFactory或ApplicationContext的引用。 - **PropertyPlaceholderConfigurer**:用于处理外部属性文件的配置问题。 综上所述,...

    spring培训学习笔记

    Spring容器是实现IoC和DI的基础,它可以是BeanFactory或ApplicationContext。容器负责管理对象的生命周期,创建、初始化、配置以及管理对象间的依赖关系。 **IoC类型**: Spring支持两种IoC容器类型:BeanFactory和...

    Spring面试题(2024最新版)-重点.docx

    Spring 框架是一个开源的Java企业级应用开发框架,由Rod Johnson在其著作《Expert One-on-One J2EE Design and Development》中首次提出。它的设计理念是简化Java应用程序的开发,通过控制反转(IoC)和面向切面编程...

    spring-reference

    - ApplicationContext是BeanFactory的高级版本,提供了更多的功能,如国际化支持、事件传播、资源访问等。 - **Added Functionality of the ApplicationContext** - **使用MessageSource**:ApplicationContext...

    Java项目教学第一学期-SSM框架讲义1-Spring的基本应用.pdf

    Spring的核心容器由BeanFactory和ApplicationContext组成: 1. `BeanFactory`:基础的IOC容器,负责初始化和管理Bean,以及调用它们的生命周期方法。配置信息通常通过XML文件提供,如`applicationContext.xml`。 2...

    spring 培训资料

    它允许开发者通过BeanFactory或ApplicationContext来管理对象的生命周期和依赖关系,这样可以降低组件间的耦合度,提高代码的可测试性和可维护性。BeanFactory作为基础的IoC容器,负责创建、配置和管理Bean,而...

    Spring框架源码

    这个模块主要包括ApplicationContext和BeanFactory。ApplicationContext是Spring的核心接口,提供了加载配置、创建和管理Bean的能力,同时还支持国际化和事件传播。BeanFactory则是更基础的容器,负责实例化、配置和...

    Spring 开发参考手册

    #### 三、Spring 的核心组件:Beans, BeanFactory 和 ApplicationContext ##### 1. Beans - **Bean 定义**: Bean 定义是 Spring IoC 容器中的基本单位,描述了 Bean 的配置信息,如类名、作用域、生命周期回调方法...

    hibernate and spring 读书笔记hibernate and spring 读书笔记

    1. **核心容器**:包含Spring框架的基础组件,如BeanFactory和ApplicationContext。 2. **数据访问/集成**:提供了JDBC抽象层、ORM(如Hibernate)集成支持以及JMS和邮件发送等功能。 3. **Web模块**:包含面向Web...

    中软公司Sping内部培训PPT

    BeanFactory是基本的容器,而ApplicationContext在BeanFactory的基础上增加了更多企业级服务,如消息源和国际化支持。 除了核心容器,Spring还提供了数据访问/集成、Web、AOP、工具和测试等模块,可以方便地整合...

    spring的核心思想

    2. **ApplicationContext**:它继承自BeanFactory,除了提供BeanFactory的所有功能之外,还提供了更多的高级特性。例如,它支持资源绑定、事件传播、消息源以及应用程序级别的事件传播等。在实际应用中,通常推荐...

    spring-framework.zip

    1. **核心容器**:这是Spring框架的基础,包括BeanFactory和ApplicationContext。BeanFactory是Spring的底层容器,负责管理对象(bean)的生命周期和依赖关系。ApplicationContext则在BeanFactory的基础上提供了更多...

Global site tag (gtag.js) - Google Analytics