栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

BeanFactory 和 ApplicationContext的区别

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

BeanFactory 和 ApplicationContext的区别

BeanFactory :

是Spring⾥⾯最底层的接⼝,是IOC的核心,提供了简单的基本的容器的功能,提供了Bean的定义、加载、实例化、依赖注入和生命周期管理等基本功能。

ApplicationContext:

是BeanFactory 的子类接口,它具备BeanFactory 所提供的功能之外,还提供了更加完整的框架功能:

1)国际化(MessageSource)
2) 访问资源,如URL和⽂件(ResourceLoader)
3) 载⼊多个(有继承关系)上下⽂,使得每⼀个上下⽂都专注于⼀个特定的层次,⽐如应⽤的web层
4) 消息发送、响应机制(ApplicationEventPublisher)
5) AOP(拦截器)

两者加载Bean之间的区别: BeanFactory :
采用延迟加载的方式注入Bean,在使用到某个Bean时调用getBean()方法,这时才对该Bean进行加载实例化的操作。这种方式在容器启动时我们不易发现Spring中所 存在的配置问题,只有当我们实例化某个Bean调用getBean()方法时才会抛出异常。
支持BeanPostProcessor和BeanFactorPostProcessor的使用,但BeanFactory 需要手动注册。
通常以编程的方式被创建.
ApplicationContext:
在启动容器时,一次性创建所有的Bean,在容器启动时,如果存在配置错误就会抛出异常,这样有利于我们检查各个Bean所依赖的属性是否注入。这种加载方式在程序运行期间速度会比较快,因为各个Bean都已经创建。不足之处在于相对于BeanFactory 的延迟加载的形式,ApplicationContext会占用更多的内存空间,而且在配置的Bean较多时,程序的启动速度较为缓慢。
支持BeanPostProcessor和BeanFactorPostProcessor的使用, ApplicationContext会自动注册。
可以使用声明的方式被创建,如使用ContextLoader.
总结

ApplicationContext继承了BeanFactory,BeanFactory是Spring中比较原始的Factory,它不支持AOP、Web等Spring插件,而ApplicationContext不仅包含了BeanFactory的所有功能,还支持Spring的各种插件,还以一种面向框架的方式工作以及对上下文进行分层和实现继承。
BeanFactory是Spring框架的基础设施,面向Spring本身;而ApplicationContext面向使用Spring的开发者,相比BeanFactory提供了更多面向实际应用的功能。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/967079.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号