正如 本章 介绍中所讨论的,org.springframework.beans.factory
包提供了管理和操纵 Bean 的基本功能,包括以编程的方式。org.springframework.context
包增加了 ApplicationContext 接口,它扩展了 BeanFactory 接口,此外还扩展了其他接口,以更加面向应用框架的方式提供额外的功能。许多人以完全声明的方式使用 ApplicationContext,甚至不以编程方式创建它,而是依靠 ContextLoader 等支持类来自动实例化一个 ApplicationContext,作为 Java EE Web 应用程序正常启动过程的一部分。
为了以更加面向框架的风格增强 BeanFactory 的功能,context 包还提供了以下功能:
- 通过 MessageSource 接口以 i18n 样式访问消息。
- 通过 ResourceLoader 接口访问资源,如 URL 和文件。
- 事件发布,即通过使用 ApplicationEventPublisher 接口,向实现 ApplicationListener 接口的 bean 发布。
- 通过 HierarchicalBeanFactory 接口,加载多个(分层的)上下文,让每个上下文都专注于一个特定的层,比如一个应用程序的网络层。