BeanFactory与ApplicationContext的区别?

一、BeanFactory和ApplicationContext 接口及其子类图

二、概述

BeanFactory和ApplicationContext是Spring的两大核心接口,都可以当做Spring的容器。其中ApplicationContext是BeanFactory的子接口。

BeanFactory:

BeanFactory是Spring里面最底层的接口,是Ioc的核心,定义了Ioc的基本功能,包含了各种Bean的定义、加载、实例化,依赖注入和生命周期管理;

ApplicationContext

ApplicationContext接口作为BeanFactory的子类,除了提供BeanFactory所具有的功能外,还提供了更完整的框架功能:
①继承MessageSource,因此支持国际化
②资源文件访问,如URL和文件(ResourceLoader)
③载入多个(有继承关系)上下文(及同时加载多个配置文件),使得每一个上下文都专注于一个特定的层次
④提供在监听器中注册bean的事件;

三、二者区别

1.BeanFactroy采用的是延迟加载形式来注入Bean的,即只有在使用到某个Bean时(调用getBean()),才对该Bean进行加载实例化,这样,我们就不能发现一些存在的Spring的配置问题。而ApplicationContext则相反,它是在容器启动时,一次性创建了所有的Bean。这样,在容器启动时,我们就可以发现Spring中存在的配置错误。 相对于基本的BeanFactory,ApplicationContext 唯一的不足是占用内存空间。当应用程序配置Bean较多时,程序启动较慢。

BeanFacotry延迟加载,如果Bean的某一个属性没有注入,BeanFacotry加载后,直至第一次使用调用getBean方法才会抛出异常;而ApplicationContext则在初始化自身是检验,这样有利于检查所依赖属性是否注入;所以通常情况下我们选择使用 ApplicationContext。应用上下文则会在上下文启动后预载入所有的单实例Bean。通过预载入单实例bean ,确保当你需要的时候,你就不用等待,因为它们已经创建好了。

2.BeanFactory和ApplicationContext都支持BeanPostProcessor、BeanFactoryPostProcessor的使用,但两者之间的区别是:BeanFactory需要手动注册,而ApplicationContext则是自动注册。(Applicationcontext比 beanFactory 加入了一些更好使用的功能。而且 beanFactory 的许多功能需要通过编程实现而 Applicationcontext 可以通过配置实现。比如后处理 bean , Applicationcontext 直接配置在配置文件即可而 beanFactory 这要在代码中显示的写出来才可以被容器识别。 )

3.beanFactory主要是面对与 spring 框架的基础设施,面对 spring 自己。而 Applicationcontex 主要面对与 spring 使用的开发者。基本都会使用 Applicationcontex 并非 beanFactory 。

四、总结

因此,在实际开发中,通常都选择使用 ApplicationContext,而只有在系统资源较少时,才考虑使用 BeanFactory。

BeanFactory与ApplicationContext的区别相关推荐

  1. BeanFactory和ApplicationContext的区别

    BeanFactory和ApplicationContext的区别 1.BeanFactory BeanFactory是Spring里面最底层的接口,提供了最简单的容器的功能,只提供了实例化对象和拿对 ...

  2. 还不知道BeanFactory和ApplicationContext的区别?

    点击蓝色"程序猿DD"关注我哟 加个"星标",不忘签到哦 转载自公众号:日拱一兵 关注我,回复口令获取可获取独家整理的学习资料: - 001:领取<Spr ...

  3. BeanFactory 和 ApplicationContext的区别

    ​​​​​​注:ApplicationContext会预先的将bean的定义加载和创建完成,如果注入不成功,会抛异常,BeanFacotry,等着调用getBean()方法的时候,才报异常. Bean ...

  4. spring学习笔记01-BeanFactory和ApplicationContext的区别

    spring学习笔记01-BeanFactory和ApplicationContext的区别 BeanFactory 和 ApplicationContext 的区别           BeanFa ...

  5. Spring的三大核心接口——BeanFactory、ApplicationContext、WebApplicationContext

    之前也在用这三个接口,但是对于他们的概念还是处于朦胧状态,同时,也不知道他们之间是一个什么关系,趁着现在有点时间总结一下吧,也需要对你有所帮助. 一.BeanFactory        基本认识: ...

  6. [读书笔记]Spring中BeanFactory和ApplicationContext的联系和区别

    写在前言 依赖反转是指依赖对象的获得被反转了.依赖控制反转的实现有很多方式,Spring中IOC容器是实现这个模式的载体,它可以在对象生成或初始化时直接将数据注入到对象中,也可以通过将对象引用注入到对 ...

  7. BeanFactory和applicationContext区别

    BeanFactory和applicationContext BeanFactory: 是Spring里面最底层的接口,包含了各种Bean的定义,读取bean配置文档,管理bean的加载.实例化,控制 ...

  8. BeanFactory和ApplicationContext接口的联系和区别

    使用BeanFactory从xml配置文件加载bean: import org.springframework.beans.factory.xml.XmlBeanFactory; import org ...

  9. BeanFactory 和 ApplicationContext 两个容器的区别与联系

    BeanFactory 是最简单的容器,由 org.springframework.beans.factory.BeanFactory 接口定义,采用懒加载(lazy-load),所以容器启动比较快. ...

最新文章

  1. LabVIEW色彩分类识别(基础篇—15)
  2. 独家 | 10分钟带你上手TensorFlow实践(附代码)
  3. HTML5 Web app开发工具Kendo UI Web中图像浏览器的使用
  4. 【超值干货】10个案例告诉你,数据如何驱动产品设计
  5. 推荐系统去偏(Debiased Recommendation)研究进展概述
  6. C++Runge-Kutta龙格-库塔法求非线性常微分方程的解(附完整源码)
  7. 利用计算机窃听,observer模拟监听器的实现
  8. Oracle dataguard 正常切换和应急切换
  9. Qt学习笔记-Qt程序切换皮肤
  10. 如何学习一个新的PHP框架
  11. 高德地图在android上的开发汇总
  12. javascript 快速入门
  13. html伸缩布局,HTML-CSS:伸缩布局
  14. Android中设置分割线
  15. ce修改植物大战僵尸阳光
  16. 汽车计算机控制系统及其组成,汽车计算机控制系统的研究.doc
  17. linux下使用代理连接外网
  18. 微信小程序picker组件仅点击其中的内容才会触发事件
  19. 变电站机器人监控系统界面(附源码)
  20. 2022年湖南省高职单招(语文)考试冲刺练习及答案

热门文章

  1. 远程桌面设置分辨率的步骤
  2. 电脑运行慢?更频繁地使用它
  3. android自动微信支付平台,Android实现微信支付功能
  4. SpringBoot实现每天给对象发送情话
  5. 怎么在edge浏览器下载扩展(插件)
  6. 仪器仪表的介绍及发展
  7. centos8使用技巧与阿贝云服务器
  8. 【微信开发】获取微信头像的问题
  9. Js 代替eval的方法
  10. 读写权限分明已获取还Permission Denied