IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> ApplicationContext 和 BeanFactory 的区别 -> 正文阅读

[Java知识库]ApplicationContext 和 BeanFactory 的区别

?包目录不同

BeanFactory:spring-beans.jar 中 org.springframework.beans.factory.BeanFactory

ApplicationContext:spring-context.jar 中 org.springframework.context.ApplicationContext

国际化

由于 ApplicationContext 实现了 MessageResource 接口,因而具有消息处理的能力

BeanFactory 没有实现 Spring 中MessageResource接口,因此BeanFactory 是不支持国际化功能的

强大的事件机制

基本上牵涉到事件(Event)方面的设计,就离不开观察者模式

ApplicationContext 的事件机制主要通过 ApplicationEvent 和 ApplicationListener这两个接口来提供的,即当 ApplicationContext 中发布一个事件时,所有扩展ApplicationListener 的 Bean 都将接受到这个事件,并进行相应的处理。

底层资源的访问

ApplicationContext 扩展了 ResourceLoader(资源加载器)接口,从而可以用来加载多个Resource,而BeanFactory 是没有扩展 ResourceLoader

创建的方式不同

BeanFactory 通常以编程的方式被创建

ApplicationContext 能以声明的方式创建

延迟加载

(1)实例化的时间不同
BeanFactroy 采用的是延迟加载形式来注入 Bean 的,即只有在使用到某个 Bean 时(调用getBean()),才对该 Bean 进行加载实例化。这样,我们就不能发现一些存在的 spring 的配置问题
ApplicationContext 则相反,它是在容器启动时,一次性创建了所有的 Bean。这样,在容器启动时,我们就可以发现Spring 中存在的配置错误
(2)对BeanPostProcessor和BeanFactoryPostProcessor的支持
BeanFactory 和 ApplicationContext 都支持 BeanPostProcessor、BeanFactoryPostProcessor 的使用。
两者之间的区别是:BeanFactory 需要手动注册,而ApplicationContext 则是自动注册。

常用的容器

(1)ApplicationContext 类型的常用容器
ClassPathXmlApplicationContext
从 ClassPath 的 XML 配置文件中读取上下文,并生成上下文定义。应用程序上下文从程序环境变量中取得。

FileSystemXmlApplicationContext
从文件系统中的 XML 配置文件读取上下文。

XmlWebApplicationContext
从 Web 应用的 XML 文件读取上下文。例如我们在 Spring MVC使用的情况。

(2)BeanFactory 类型的常用容器
XmlBeanFactory
BeanFactory 类型的有 XmlBeanFactory,它可以根据 XML 文件中定义的内容,创建相应的Bean

?总结

BeanFactory 是 Spring 框架的基础设施,面向 Spring 本身
ApplicationContext 面向使用Spring 的开发者,相比于 BeanFactory,
ApplicationContext提供了更多面向实际开发的功能,几乎所有场合都可以直接使用
ApplicationContext,而不是底层的 BeanFactory。
?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 20:27:04  更:2022-10-08 20:29:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 -2025/3/10 15:47:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码