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

  • 相关阅读:
    搜索回车跳转页面
    登录验证码
    【排序算法】排序算法之插入排序
    PAT 乙级 1044 火星数字 (20 分)
    PAT 甲级 1035 Password (20 分)
    PAT 甲级 1041 Be Unique (20 分)
    PAT 甲级 1054 The Dominant Color (20 分)
    PAT 甲级 1027 Colors in Mars (20 分)
    PAT 甲级 1083 List Grades (25 分)
    PAT 甲级 1005 Spell It Right (20 分)
  • 原文地址:https://www.cnblogs.com/wl0000-03/p/6617479.html
Copyright © 2011-2022 走看看