当前位置: 首页 > news >正文

Spring 中的 BeanFactory 和 ApplicationContext

在 Spring 中,BeanFactoryApplicationContext 都是 IOC 容器的实现接口,负责管理 Bean 的生命周期和依赖注入。但它们之间确实有一些关键区别。

🔍 一、什么是 BeanFactory?

BeanFactorySpring 最基础的 IOC 容器接口,提供了最基本的功能,比如:

  • Bean 的创建、管理、获取
BeanFactory factory = new XmlBeanFactory(new FileSystemResource("beans.xml"));
MyBean bean = (MyBean) factory.getBean("myBean");

特点:

  • 懒加载:只有在你 getBean() 时才创建对象
  • 功能简单,适合资源受限环境(如 IoT)

🌱 二、什么是 ApplicationContext?

ApplicationContextBeanFactory子接口,它在 BeanFactory 基础上扩展了更多高级功能。

ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
MyBean bean = context.getBean(MyBean.class);

除了 BeanFactory 的功能,还提供了:

功能说明
国际化支持消息资源 MessageSource
事件机制ApplicationEvent 发布和监听
自动 Bean 注册通过注解或包扫描自动注册
资源访问支持访问文件、URL、classpath 资源
Bean 后处理器支持 BeanPostProcessor、AOP 等
集成 Spring BootApplicationContext 是 Boot 的基础容器

🆚 三、BeanFactory vs ApplicationContext 对比表

对比项BeanFactoryApplicationContext
是否延迟加载✅ 是❌ 否(启动时加载所有单例 Bean)
是否支持 AOP❌ 不完全支持✅ 支持
国际化支持❌ 无✅ 有
事件监听❌ 不支持✅ 支持
配置方式基于 XMLXML、注解、JavaConfig
使用场景内存小、功能简单的系统企业级开发、推荐默认使用

🧠 四、一句话总结:

BeanFactory 是原始版,适合低资源场景;
ApplicationContext 是升级版,更强大、更智能、是我们开发中 99% 使用的容器

你可以简单记住:
🧊 BeanFactory 是“冰箱”——需要时去拿,
🔥 ApplicationContext 是“饭店”——饭点前就备好了。

相关文章:

  • V-SHOW和箭头函数在VUE项目的踩坑点
  • Excel + VBA 实现“准实时“数据的方法
  • 类与对象(上)
  • 每日一题(小白)字符串娱乐篇16
  • Python星球日记 - 第5天:循环结构
  • 代码随想录算法训练营Day20
  • 【USTC 计算机网络】第三章:传输层 - 面向连接的传输:TCP
  • 【堆排序】 及 【Top-K问题】
  • mysql和sqlite关于data数据的识别问题
  • 关于Ubuntu系统的远程控制及文件传输
  • C++中的匿名函数
  • 毕设论文的分类号与UDC查询的网站
  • 类似于langchain的开发框架有哪些?
  • Java内存模型详解:堆、栈、方法区
  • QVector成员
  • SQL Server表数据的插入、修改和删除
  • C++的多态-上
  • 【软件测试】性能测试 —— 基础概念篇
  • Kotlin语言进阶:协程、Flow、Channel详解(一)
  • Spring Boot + Kafka 消息队列从零到落地
  • 公司建设网站需求/google adsense
  • 前端做任务的网站/自媒体人专用网站
  • 做色流网站在哪买/seo优化的网站
  • 软件下载网站模版/百度的网址是多少
  • 深圳网站公司网站制作/电子商务网络营销
  • 网站的涂鸦效果图怎么做的/seo外包公司专家