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对象

  • 相关阅读:
    用Doxygen生成X3D的继承关系树
    FreeBSD 8.0候选版本RC2发布
    Mozilla Firefox, Apple Safari,Chrome等主流浏览器均开始WebGL支持
    关于企业管理信息系统
    [转]WebGL标准最新进展
    C++ + Irrlicht整一个东东?
    FreeWRL Windows Beta版本注记
    选择C++开发环境
    老人与老浏览器-李开复与成熟度最高的VRML浏览器SGI Cosmo
    WebGL概念及HTML5推广给X3D规范带来的新出路
  • 原文地址:https://www.cnblogs.com/wl0000-03/p/6617479.html
Copyright © 2011-2022 走看看