zoukankan      html  css  js  c++  java
  • Spring中BeanFactory和ApplicationContext的区别

    我用一个例子去测试BeanFactory和ApplicationContext的区别

    首先建立一个bean

    public class User {
    //声明无参构造,打印一句话,监测对象创建时机
    public User(){ System.out.println("User对象初始化"); } }

    然后再建立测试类

    public class UserTest {
        @Test
        public void ApplicationContexttest(){
            ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
    
        }
        @Test
        public void BeanFactorytest(){
            Resource resource=new PathResource("applicationContext.xml");
            BeanFactory beanFactory=new XmlBeanFactory(resource);
        }
    }

    配置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"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd ">

    <bean name="user" class="bean.entity.User"></bean>

    </beans>

    执行 ApplicationContexttest()方法

    结果:

    说明user对象在ApplicationContext对象创建时user对象就已经初始化

    执行BeanFactorytest()方法 

    结果:

    BeanFactory对象初始化时并没有初始化user对象

    然后向两个方法添加获取对象的代码

    public class UserTest {
        @Test
        public void ApplicationContexttest(){
            ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
            System.out.println(context.getBean("user"));
            System.out.println(context.getBean("user"));
    
        }
        @Test
        public void BeanFactorytest(){
            Resource resource=new ClassPathResource("applicationContext.xml");
            BeanFactory beanFactory=new XmlBeanFactory(resource);
            System.out.println(beanFactory.getBean("user"));
            System.out.println(beanFactory.getBean("user"));
        }
    }

    执行 ApplicationContexttest()方法

    结果:

    两次对象内存地址一致

    执行BeanFactorytest()方法 

    结果:

    在执行getBean()方法时才创建user对象

  • 相关阅读:
    paip.提升性能C#.NET程序内存占用过多以及OutOfMemory解决方法
    ATTILAX项目进展表VC425
    paip.VOB DVD视频的无损分割与截取
    paip.程序不报错自动退出的解决
    paip.TechExcel DevSuite IIS 应用配置
    paip.软件版本完善计划C426fromVC423
    paip.chrome使用ACTIVX 的总结
    PAIP批量改名JS实现
    Source Navigato rNG4.4在ubuntu的简单的安装
    QuartusII编译出错小小总结
  • 原文地址:https://www.cnblogs.com/www-datou-com/p/6617367.html
Copyright © 2011-2022 走看看