BeanFactory与ApplicationContext的区别
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的区别相关推荐
- BeanFactory和ApplicationContext的区别
BeanFactory和ApplicationContext的区别 1.BeanFactory BeanFactory是Spring里面最底层的接口,提供了最简单的容器的功能,只提供了实例化对象和拿对 ...
- 还不知道BeanFactory和ApplicationContext的区别?
点击蓝色"程序猿DD"关注我哟 加个"星标",不忘签到哦 转载自公众号:日拱一兵 关注我,回复口令获取可获取独家整理的学习资料: - 001:领取<Spr ...
- BeanFactory 和 ApplicationContext的区别
注:ApplicationContext会预先的将bean的定义加载和创建完成,如果注入不成功,会抛异常,BeanFacotry,等着调用getBean()方法的时候,才报异常. Bean ...
- spring学习笔记01-BeanFactory和ApplicationContext的区别
spring学习笔记01-BeanFactory和ApplicationContext的区别 BeanFactory 和 ApplicationContext 的区别 BeanFa ...
- Spring的三大核心接口——BeanFactory、ApplicationContext、WebApplicationContext
之前也在用这三个接口,但是对于他们的概念还是处于朦胧状态,同时,也不知道他们之间是一个什么关系,趁着现在有点时间总结一下吧,也需要对你有所帮助. 一.BeanFactory 基本认识: ...
- [读书笔记]Spring中BeanFactory和ApplicationContext的联系和区别
写在前言 依赖反转是指依赖对象的获得被反转了.依赖控制反转的实现有很多方式,Spring中IOC容器是实现这个模式的载体,它可以在对象生成或初始化时直接将数据注入到对象中,也可以通过将对象引用注入到对 ...
- BeanFactory和applicationContext区别
BeanFactory和applicationContext BeanFactory: 是Spring里面最底层的接口,包含了各种Bean的定义,读取bean配置文档,管理bean的加载.实例化,控制 ...
- BeanFactory和ApplicationContext接口的联系和区别
使用BeanFactory从xml配置文件加载bean: import org.springframework.beans.factory.xml.XmlBeanFactory; import org ...
- BeanFactory 和 ApplicationContext 两个容器的区别与联系
BeanFactory 是最简单的容器,由 org.springframework.beans.factory.BeanFactory 接口定义,采用懒加载(lazy-load),所以容器启动比较快. ...
最新文章
- LabVIEW色彩分类识别(基础篇—15)
- 独家 | 10分钟带你上手TensorFlow实践(附代码)
- HTML5 Web app开发工具Kendo UI Web中图像浏览器的使用
- 【超值干货】10个案例告诉你,数据如何驱动产品设计
- 推荐系统去偏(Debiased Recommendation)研究进展概述
- C++Runge-Kutta龙格-库塔法求非线性常微分方程的解(附完整源码)
- 利用计算机窃听,observer模拟监听器的实现
- Oracle dataguard 正常切换和应急切换
- Qt学习笔记-Qt程序切换皮肤
- 如何学习一个新的PHP框架
- 高德地图在android上的开发汇总
- javascript 快速入门
- html伸缩布局,HTML-CSS:伸缩布局
- Android中设置分割线
- ce修改植物大战僵尸阳光
- 汽车计算机控制系统及其组成,汽车计算机控制系统的研究.doc
- linux下使用代理连接外网
- 微信小程序picker组件仅点击其中的内容才会触发事件
- 变电站机器人监控系统界面(附源码)
- 2022年湖南省高职单招(语文)考试冲刺练习及答案