我对这两个概念感到困惑.阅读Spring文档,我发现,例如.bean工厂是Spring容器.我还读到"ApplicationContext是BeanFactory的完整超集".但两者之间的差异并不明显.那么区别是什么呢?
yor*_*rkw 17
Ajinkya附带的这个链接的答案非常全面,但是,我想引用另一个材料的一些好点 - Spring in Action(Manning Publications):
在基于Spring的应用程序中,您的应用程序对象将存在于Spring容器中.如图2.1所示,容器将创建对象,将它们连接在一起,配置它们,并管理它们从摇篮到坟墓的整个生命周期(或者根据具体情况来管理new到finalize()).
没有一个Spring容器.Spring带有几个容器实现,可以分为两种不同的类型.Bean工厂(由org.springframework.beans.factory.BeanFactory接口定义)是最简单的容器,为DI提供基本支持.应用程序上下文(由org.springframework.context.ApplicationContext接口定义)通过提供应用程序框架服务构建于bean工厂的概念,例如从属性文件解析文本消息的能力以及向感兴趣的人发布应用程序事件的能力事件听众.
表面上,ApplicationContext与BeanFactory非常相似.加载bean定义,连接bean,并根据请求分配bean.但ApplicationContext提供了更多:
- 应用程序上下文提供了解决文本消息的方法,包括支持这些消息的国际化(I18N).
- 应用程序上下文提供了加载文件资源(如图像)的通用方法.
- 应用程序上下文可以将事件发布到注册为侦听器的bean.
由于它提供了额外的功能,因此几乎所有应用程序中的ApplicationContext都比BeanFactory更受欢迎.您可能考虑使用BeanFactory的唯一情况是资源稀缺的情况,例如移动设备.
除了应用程序上下文提供的附加功能之外,应用程序上下文和bean工厂之间的另一个重要区别是如何加载单个bean.bean工厂懒洋洋地加载所有bean,推迟bean创建,直到调用getBean()方法.应用程序上下文更聪明,并在上下文启动时预加载所有单例bean.通过预加载单例bean,您可以确保它们在需要时可以使用 - 您的应用程序不必等待它们被创建.
归档时间: |
|
查看次数: |
12006 次 |
最近记录: |