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

  • 相关阅读:
    WPF在XAML的资源中定义空字符串String.Empty
    WPF中定义TabItem的可选区域(特别是当使用Label来呈现Header时)
    反转ListBox的ListBoxItem(控件级别,不是数据的反转)
    WPF获取相对位置、坐标的方法
    WPF为ItemsControl设置ItemsPanelTemplate
    WPF中List的Add()与Insert()方法的区别
    返回表达式列表中最小值least(exp1,exp2,exp3,……,expn)
    oracle_基本SQL语言
    JS 实现的浏览器系统通知 iNotify.js
    RHCE认证考前辅导
  • 原文地址:https://www.cnblogs.com/wl0000-03/p/6617479.html
Copyright © 2011-2022 走看看