我用一个例子去测试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对象

Spring中的BeanFactory和ApplicationContext的区别的更多相关文章

  1. spring中的BeanFactory与ApplicationContext的作用和区别?

    BeanFactory类关系继承图 1. BeanFactory类结构体系: BeanFactory接口及其子类定义了Spring IoC容器体系结构,由于BeanFactory体系非常的庞大和复杂, ...

  2. spring中的BeanFactory与ApplicationContext的作用和区别

    BeanFactory 和ApplicationContext Bean 工厂(com.springframework.beans.factory.BeanFactory)是Spring 框架最核心的 ...

  3. 【学习笔记】Spring中的BeanFactory和ApplicationContext 以及 Bean的生命周期(Y2-3-2)

    BeanFactory和ApplicationContext Spring的IoC容器就是一个实现了BeanFactory接口的可实例化类. Spring提供了两种不同的容器: 一种是最基本的Bean ...

  4. 理解spring中的BeanFactory和FactoryBean的区别与联系

    原文地址:http://blog.csdn.net/joenqc/article/details/66479154 首先,这俩都是个接口… 实现 BeanFactory 接口的类表明此类事一个工厂,作 ...

  5. spring中的BeanFactory和FactoryBean的区别与联系

    首先,这俩都是个接口… 实现 BeanFactory 接口的类表明此类是一个工厂,作用就是配置.新建.管理 各种Bean. 而 实现 FactoryBean 的类表明此类也是一个Bean,类型为工厂B ...

  6. BeanFactory和ApplicationContext的区别+部分Spring的使用

    BeanFactory和ApplicationContext的区别 ApplicationContext 方式加载:创建容器的同时 容器初始化,容器所有的bean创建完毕   Spring容器中获取一 ...

  7. 转:Spring系列之beanFactory与ApplicationContext

    原文地址:Spring系列之beanFactory与ApplicationContext 一.BeanFactoryBeanFactory 是 Spring 的“心脏”.它就是 Spring IoC ...

  8. Spring中<ref local=""/>与<ref bean=""/>区别

    小 Spring中<ref local=""/>与<ref bean=""/>区别 (2011-03-19 19:21:58) 转载▼ ...

  9. Spring中的BeanFactory与FactoryBean看这一篇就够了

    前言 理解FactoryBean是非常非常有必要的,因为在Spring中FactoryBean最为典型的一个应用就是用来创建AOP的代理对象,不仅如此,而且对理解Mybatis核心源码也非常有帮助!如 ...

随机推荐

  1. jmeter服务器监控插件指标简单说明

    以下是下载了服务器监控插件的各个组件的功能介绍,有助于以后jmeter的性能测试 1.jp@gc - Actiive Threads Over Time:不同时间的活动用户数量展示(图表) 当前的时间 ...

  2. Centos7.4下安装Mysql8.0.15

    一.下载Mysql Mysql下载地址:https://dev.mysql.com/downloads/mysql/ 二.卸载Linux自带的mariadb    安装Mysql之前需要卸载maria ...

  3. 爬虫之chrome浏览器的使用方法

    chrome浏览器使用方法介绍 1. 新建隐身窗口 1.1 为什么需要新建隐身窗口 在打开隐身窗口的时候,第一次请求某个网站是没有携带cookie的,和代码请求一个网站一样,不携带cookie.这样就 ...

  4. python模块之 fabric

    Python模块之Fabric   Fabric简介 Fabric是一个Python库,可以通过SSH在多个host上批量执行任务.你可以编写任务脚本,然后通过Fabric在本地就可以使用SSH在大量 ...

  5. mysql.sock文件丢失被删除解决方法

    Mysql有两种连接方式: (1),TCP/IP (2),socket 对mysql.sock来说,其作用是程序与mysqlserver处于同一台机器,发起本地连接时可用. 例如你无须定义连接host ...

  6. 自定义ASP.NET Core日志中间件

    这个日志框架使用的是ASP.NET Core的NLog,用来记录每次请求信息和返回信息. 1.首先创建一个Web应用项目,我选择的是MVC模板: 2.使用NuGet添加Microsoft.Extens ...

  7. 代码版本控制:git使用

    1.https://github.com/ 注册账号 2. 点击 Start a project 3. 4. 5.      Clone or download 6.      安装git 7.    ...

  8. mvvm小论(暂记)

    广州-PC26(34627) 2:09:44 在android 线程最后用 handler = new Handler();            updateThread = new Runnabl ...

  9. linux常用多线程下载工具

    1.axel 下载安装yum install axel 这个软件下载速度实时显示

  10. Windows Git Bash命令行下创建git仓库并更新到github

    大二的时候就听过老师说有一个叫git的版本管理工具,当时只是听老师说说而已,也没有去使用它,因为当时用过svn,就感觉自己没多少东西需要git管理. 最近几天,我经常在开源中国看别人的帖子,看到别人对 ...