• BeanFactory和ApplicationContext的区别


    1.BeanFactory和ApplicationContext的异同点: 

           相同点:

        两者都是通过xml配置文件加载bean,ApplicationContext和BeanFacotry相比,提供了更多的扩展功能。

       不同点:

        BeanFactory是延迟加载,如果Bean的某一个属性没有注入,BeanFacotry加载后,直至第一次使用调用getBean方法才会抛出异常;而ApplicationContext则在初始化自身是检验,这样有利于检查所依赖属性是否注入;所以通常情况下我们选择使用ApplicationContext

     2.在实际开发中用BeanFactory还是ApplicationContext

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

       3.一个简单的例子来证明BeanFactory和ApplicationContext主要区别

        搭建工程的环境就不说了,直接上代码。

    1.首先创建一个实体类:User

    复制代码
    public class User {
    
         public User(){
    
          System.out.println("实例化User");
    
         }
    
    }
    复制代码

    2.在创建一个ApplicationContext.xml文件

    复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns="http://www.springframework.org/schema/beans"
    
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    
        xsi:schemaLocation="
    
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <bean id="user" class="cn.test.User"></bean>
    
    </beans>
    复制代码

    3.创建测试类

       

    复制代码
    public class TestHappy {
    
     
    
    /**
    
     * BeanFactory的测试
    
     */
    
    @Test
    
    public void beanFactoryTest(){
    
    BeanFactory beanFactory=new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));
    
    }
    
     
    
     
    
    /**
    
     * ApplicationContext的测试
    
     */
    
    @Test
    
    public void applicationContextTest(){
    
    ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
    
    }
    
     
    
    }
    复制代码

    BeanFactory测试结果:

     

    ApplicationContext测试结果:

           

      总结:

       BeanFactory当需要调用时读取配置信息,生成某个类的实例。如果读入的Bean配置正确,则其他的配置中有错误也不会影响程序的运行。而ApplicationContext 在初始化时就把 xml 的配置信息读入内存,对 XML 文件进行检验,如果配置文件没有错误,就创建所有的Bean ,直接为应用程序服务。相对于基本的BeanFactory,ApplicationContext 唯一的不足是占用内存空间。当应用程序配置Bean较多时,程序启动较慢。

  • 相关阅读:
    转载-HTTP
    程序员如何写出杀手级的简历
    23 岁的你,曾处于什么样的状态?现在呢?
    IntelliJ IDEA 14 java项目中添加jar包
    BNR Android Demo学习笔记(一)——CrimeIntent
    Android高仿微信(一)——如何消除启动时的白屏
    Swift2.1 语法指南——高级操作符
    Swift2.1 语法指南——访问控制
    Swift2.1 语法指南——泛型
    Swift2.1 语法指南——协议
  • 原文地址:https://www.cnblogs.com/zhoading/p/8286860.html
Copyright © 2020-2023  润新知