04.Spring的IoC容器之BeanFactory.pdf

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
04.Spring的IoC容器之BeanFactory

20 Spring 的 IoC 容器 Spring的IoC容器之BeanFactory 本章内容 ? 拥有BeanFactory之后的生活 ? BeanFactory的对象注册与依赖绑定方式 ? BeanFactory的XML之旅 第 4 章 ? 容器背后的秘密 我们前面说过,Spring的IoC容器是一个IoC Service Provider,但是,这只是它被冠以IoC之名的部 分原因,我们不能忽略的是“容器”。Spring的IoC容器是一个提供IoC支持的轻量级容器,除了基本 的IoC支持,它作为轻量级容器还提供了IoC之外的支持。如在Spring的IoC容器之上,Spring还提供了 相应的AOP框架支持、企业级服务集成等服务。Spring的IoC容器和IoC Service Provider所提供的服务 之间存在一定的交集,二者的关系如图4-1所示。 图4-1 Spring的IoC容器和IoC Service Provider之间的关系 注意 本章将主要关注Spring的IoC容器提供的IoC相关支持以及衍生的部分高级特性。而IoC 容器提供的其他服务将在后继章节中陆续阐述。 Spring提供了两种容器类型:BeanFactory和ApplicationContext。 ? BeanFactory。基础类型IoC容器,提供完整的IoC服务支持。如果没有特殊指定,默认采用延 迟初始化策略(lazy-load)。只有当客户端对象需要访问容器中的某个受管对象的时候,才对 该受管对象进行初始化以及依赖注入操作。所以,相对来说,容器启动初期速度较快,所需 要的资源有限。对于资源有限,并且功能要求不是很严格的场景,BeanFactory是比较合适的 IoC容器选择。 ? ApplicationContext。ApplicationContext在BeanFactory的基础上构建,是相对比较高 级的容器实现,除了拥有BeanFactory的所有支持,ApplicationContext还提供了其他高级 3.3 小结 21 特性,比如事件发布、国际化信息支持等,这些会在后面详述。ApplicationContext所管理 的对象,在该类型容器启动之后,默认全部初始化并绑定完成。所以,相对于BeanFactory来 说,ApplicationContext要求更多的系统资源,同时,因为在启动时就完成所有初始化,容 器启动时间较之BeanFactory也会长一些。在那些系统资源充足,并且要求更多功能的场景中, ApplicationContext类型的容器是比较合适的选择。 2 3 通过图4-2,我们可以对BeanFactory和ApplicationContext之间的关系有一个更清晰的认识。 4 5 6 7 图4-2 BeanFactory和ApplicationContext继承关系 8 注意 ApplicationContext间接继承自BeanFactory,所以说它是构建于BeanFactory之上 的IoC容器。此外,你应该注意到了,ApplicationContext还继承了其他三个接口,它们之间 的关系,我们将在第5章中详细说明。 9 另外,在没有特殊指明的情况下,以BeanFactory为中心所讲述的内容同样适用于Applica- tionContext,这一点需要明确一下,二者有差别的地方会在合适的位置给出解释。 10 BeanFactory,顾名思义,就是生产Bean的工厂。当然,严格来说,这个“生产过程”可能不像 说起来那么简单。既然Spring框架提倡使用POJO,那么把每个业务对象看作一个JavaBean对象,或许 更容易理解为什么Spring的IoC基本容器会起这么一个名字。作为Spring提供的基本的IoC容器, BeanFactory可以完成作为IoC Service Provider的所有职责,包括业务对象的注册和对象间依赖关系的 绑定。 11 12 BeanFactory就像一个汽车生产厂。你从其他汽车零件厂商或者自己的零件生产部门取得汽车零 件送入这个汽车生产厂,最后,只需要从生产线的终点取得成品汽车就可以了。相似地,将应用所需 的所有业务对象交给BeanFactory之后,剩下要做的,就是直接从BeanFactory取得最终组装完成并 且可用的对象。至于这个最终业务对象如何组装,你不需要关心,BeanFactory会帮你搞定。 13 14 所以,对于客户端来说,与BeanFactory打交道其实很简单。最基本地,BeanFactory肯定会公 开一个取得组装完成的对象的方法接口,就像代码清单4-1中真正的B

文档评论(0)

l215322 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档