BeanFactory 和 ApplicationContext 有什么区别

简介: BeanFactory 和 ApplicationContext 有什么区别

ApplicationContext是BeanFactory 的子接口

ApplicationContext 提供了更完整的功能;

①继承MessageSource, 因此支持国际化。

②统一的资源文件访问方式。

③提供在监听器中注册bean的事件。

④同时加载多个配置文件。

⑤载入多个(有继承关系)上下文, 使得每一个上下文都专注于一个特定的层次, 比如应用的web层。


BeanFactory 采用的是延迟加载形式来注入bean的, 即只有在使用到某个Bean时(调用getBean()),才对该Bean 进行加载实例化。这样, 我们就不能发现一些存在的Spring的配置问题。如果Bean的某一个属性没有注入,

BeanFactory加载后,直至第一次使用调用getBean方法才会抛出异常。


ApplicationContext, 它是在容器启动时,一次性创建了所有的Bean。这样,在容器启动时,我们就可以发现Spring中存在的配置错误,这样有利于检查所依赖属性是否注入。ApplicationContext启动后预载入所有的单实例Bean,通过预载入单实例bean,确保当你需要的时候,你就不用等待, 因为它们已经创建好了。

相对于基本的BeanFactory,ApplicationContext唯一的不足是占用内存空间。当应用程序配置Bean较多时,程序启动较慢。

BeanFactory通常以编程的方式被创建,ApplicationContext还能以声明的方式创建, 如使用ContextLoader。

BeanFactory 和 ApplicationContext 都支持BeanPostProcessor、BeanFactoryPostProcessor的使用,但两者之间的区别是:BeanFactory需要手动注册,而ApplicationContext 则是自动注册。

目录
相关文章
|
Kubernetes 应用服务中间件 API
Kubernetes(K8S)命令指南
Kubernetes(K8S)命令指南
515 0
ES集群报错 failed to send join request to maste
ES集群报错 failed to send join request to maste
384 0
|
人工智能 自然语言处理 大数据
商标起名工具
AI帮你智能推荐高通过率的好名字
商标起名工具
|
8月前
|
移动开发 JavaScript API
HarmonyOS Next 简单上手元服务开发
本文介绍了 HarmonyOS Next 中元服务的开发流程与关键特性。元服务是一种轻量级应用程序形态,支持免安装、秒开直达,适用于听音乐、打车等场景,大幅提升服务获取效率。文章详细讲解了元服务的开发旅程,包括在 AGC 平台上新建项目、修改名称与图标、新增卡片等内容,并提供了代码示例,如 AtomicServiceTabs 的 tab 切换和标题设置、AtomicServiceNavigation 的路由管理等。此外,还探讨了 AtomicServiceWeb 的使用方法,涵盖鸿蒙页面与 h5 页面的数据传递及方法调用。
728 20
HarmonyOS Next 简单上手元服务开发
|
机器学习/深度学习 数据采集 人工智能
AI与机器学习:从理论到实践
【10月更文挑战第2天】本文将深入探讨AI和机器学习的基本概念,以及它们如何从理论转化为实际的应用。我们将通过Python代码示例,展示如何使用机器学习库scikit-learn进行数据预处理、模型训练和预测。无论你是AI领域的初学者,还是有一定基础的开发者,这篇文章都将为你提供有价值的信息和知识。
|
10月前
|
数据采集 SQL 人工智能
瓴羊Dataphin:AI驱动的数据治理——千里之行,始于标准 |【瓴羊数据荟】数据MeetUp第三期
数据标准是数据治理的核心抓手,通过梳理数据标准可以有效提升数据质量。瓴羊Dataphin平台利用AI技术简化数据治理流程,实现自动化的数据标准建立、质量规则构建和特征识别,助力企业在大模型时代高效治理数据,推动数据真正为业务服务。
846 28
瓴羊Dataphin:AI驱动的数据治理——千里之行,始于标准 |【瓴羊数据荟】数据MeetUp第三期
|
存储 运维 自然语言处理
研发视角:一个需求应该怎么拆解与实现?
研发过程中,开发同学在接到一个需求后,必须要回答两个问题:做什么(WHAT)、怎么做(HOW)。本文就开发与测试在拆解需求时面临的共性问题,结合自己过往的经验,总结的一个实用的方法。本文不讨论技术选型,仅从思考逻辑上总结应该如何拆解与实现一个给定的需求。欢迎讨论。理解需求拆解的关注点以带UI的需求为示例,来看拆解需求过程中的关注点。看下图,停留20秒,思考两个问题:(1)从无到有实现以下需求对应的
75792 10
研发视角:一个需求应该怎么拆解与实现?
单片机IO口模拟串口实现原理
单片机IO口模拟串口实现原理
587 5
|
Kotlin
Kotlin中的算数运算符
Kotlin中的算数运算符
179 3
|
存储 Java 测试技术
滚雪球学Java(30):多维数组:定义和初始化一次搞定
【5月更文挑战第5天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
273 0
滚雪球学Java(30):多维数组:定义和初始化一次搞定