1、2.2.3 ApplicationContext 的特点我们了解了 IoC 容器建立的基本步骤。现在可以很方便地通过编程的方式来手工控制这些配置和容器的建立过程了。但是,在 Spring 中系统已经为用户提供了许多已经定义好的容器实现,而不需要开发人员事必躬亲。相比那些简单拓展 BeanFactory 的基本 IoC 容器,开发人员常用的 ApplicationContext 除了能够提供在上面看到的容器的基本功能外,还为用户提供了以下的附加服务,可以让客户更方便地使用。所以说,ApplicationContext 是一个高级形态意义的 IoC 容器,如图 2-3 所示,可以看到 Applic
2、ationContext 在BeanFactory 的基础上添加的附加功能,这些功能为 ApplicationContext 提供了以下BeanFactory 不具备的新特性。支持不同的信息源。我们看到 ApplicationContext 扩展了 MessageSource 接口,这些信息源的扩展功能可以支持国际化的实现,为开发多语言版本的应用提供服务。访问资源。体现在对 ResourceLoader 和 Resource 的支持上,这样我们可以从不同地方得到 Bean 定义资源。这种抽象使用户程序可以灵活地定义 Bean 定义信息,尤其是从不同的 IO 途径得到 Bean 定义信息。这在接
3、口关系上看不出来,一般来说,具体 Applic-ationContext 都是继承了 DefaultResourceLoader 的子类。因为 DefaultResourc-eLoader 是AbstractApplicationContext 的基类,关于 Resource 在 IoC 容器中的使用,在 2.3 节中有详细的讲解。支持应用事件。继承了接口 ApplicationEventPublisher,这样在上下文中引入了事件机制。这些事件和 Bean 的生命周期的结合为 Bean 的管理提供了便利。在 ApplicationContext 中提供的附加服务。这些服务使得基本 IoC 容器的功能更丰富。因为具备了这些丰富的附加功能,使得 ApplicationContext 与简单的 BeanFactory 相比,对它的使用是一种面向框架的使用风格,所以一般建议在开发应用时使用 ApplicationContext作为 IoC 容器的基本形式。【责任编辑: 董书 TEL:(010)68476606