zoukankan      html  css  js  c++  java
  • 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较多时,程序启动较慢。

  • 相关阅读:
    POSIX、XNU
    面向切面编程
    盗链
    django restframwork教程之Request和Response
    django restframework 教程之Serialization(序列化)
    Django restframwork
    saltstack远程执行命令.md
    saltstack安装
    django实现瀑布流、组合搜索、阶梯评论、验证码
    django文件上传和序列化
  • 原文地址:https://www.cnblogs.com/zhoading/p/8286860.html
Copyright © 2011-2022 走看看