zoukankan      html  css  js  c++  java
  • Spring-1、BeanFactory和ApplicationContext的区别

    一、描述

    BeanFactory:

    是Spring里面最低层的接口,提供了最简单的容器的功能,只提供了实例化对象和拿对象的功能;

    ApplicationContext:

    应用上下文,继承BeanFactory接口,它是Spring的一各更高级的容器,提供了更多的有用的功能;

    1) 国际化(MessageSource)

    2) 访问资源,如URL和文件(ResourceLoader)

    3) 载入多个(有继承关系)上下文 ,使得每一个上下文都专注于一个特定的层次,比如应用的web层  

    4) 消息发送、响应机制(ApplicationEventPublisher)

    5) AOP(拦截器)

    二、两者装载bean的区别

    BeanFactory:

    BeanFactory在启动的时候不会去实例化Bean,中有从容器中拿Bean的时候才会去实例化;

    //XmlBeanFactory是典型的BeanFactory。
     BeanFactory factory = new XmlBeanFactory("XXX.xml");
     //获取一个叫做mdzz的bean。在这个时候进行实例化。
     factory.getBean("mdzz");

    ApplicationContext:

    ApplicationContext在启动的时候就把所有的Bean全部实例化了。它还可以为Bean配置lazy-init=true来让Bean延迟实例化; 

    //当我们实例化XXX.xml的时候,该文件中配置的bean都会被实例化。(该bean scope是singleton)
    ApplicationContext appContext = new ClassPathXmlApplicationContext("XXX.xml");

    三、三种获取ApplicationContext对象引用的方法

    /第一种加载方法,加载的是classpath下的配置文件。
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
    //第二种加载方法,加载的是磁盘路径下的文件。
    ApplicationContext applicationContext = new FileSystemXmlApplicationContext("applicationContext.xml");
    //第三种加载方法,XmlWebApplicationContext,从web系统中加载。
    
    //得到配置文件后,就能拿到想要的对象。例如:
    HelloService helloService = (HelloService) applicationContext.getBean("userService");
    //在这当中getBean中的参数为你在配置文件下,这个对象的id,一个标识。

    4、区别:

    1. 如果使用ApplicationContext,如果配置的bean是singleton,那么不管你有没有或想不想用它,它都会被实例化。好处是可以预先加载,坏处是浪费内存。
    2. BeanFactory,当使用BeanFactory实例化对象时,配置的bean不会马上被实例化,而是等到你使用该bean的时候(getBean)才会被实例化。好处是节约内存,坏处是速度比较慢。多用于移动设备的开发。
    3. 没有特殊要求的情况下,应该使用ApplicationContext完成。因为BeanFactory能完成的事情,ApplicationContext都能完成,并且提供了更多接近现在开发的功能。
  • 相关阅读:
    UVA 11488 Hyper Prefix Sets (字典树)
    UVALive 3295 Counting Triangles
    POJ 2752 Seek the Name, Seek the Fame (KMP)
    UVA 11584 Partitioning by Palindromes (字符串区间dp)
    UVA 11100 The Trip, 2007 (贪心)
    JXNU暑期选拔赛
    计蒜客---N的-2进制表示
    计蒜客---线段的总长
    计蒜客---最大质因数
    JustOj 2009: P1016 (dp)
  • 原文地址:https://www.cnblogs.com/chenxiaoxian/p/10427089.html
Copyright © 2011-2022 走看看