Spring基础(6)——使用应用程序环境

ApplicationContext接口由BeanFactory派生而来,提供了更多面向实际应用的功能,在BeanFactory中,很多功能需要以编程的方式实现,而ApplicationContext中则可以通过配置的方式进行控制。因为ApplicationContext完全通过BeanFactory扩展而来,因而BeanFactory所具备的能力和行为也适用于ApplicationContext。

1、ApplicationContext体系结构

ApplicationContext基本功能与BeanFactory相似,也具有负责读取Bean定义文件,维护Bean之间的依赖关系等,也提供了一个应用程序所需的更完整的框架功能。

提供取得资源文件(Resource File)更方便的方法;

提供文字消息解析的方法;

支持国际化(internationalization,i18n)消息;

ApplicationContext可以发布事件,对事件感兴趣的Bean可以接受到这些事件;

Spring的创始人建议使用ApplicationContext取代BeanFactory,实现ApplicationContext的类有很多,最常用的为以下两个:

FileSystemXMLApplicationContext 可执行XML定义文件的相对路径和绝对路径来读取定义的文件。

ClassPathXmlApplicationContext 从classpath设定路径来读取Xml定义文件。

借用网友的一张图来表示ApplicationContext的继承体系:

ApplicationContext继承了HierachicalBeanFactory和ListableBeanFactory接口,在此基础上还通过多个其他接口扩展了BeanFactory接口的功能:

ApplicationEventPublisher:使容器拥有发布上下文时间的功能,包括容器启动事件和关闭事件。实现了ApplicationListener事件监听接口的Bean可以接受到容器事件,并对事件进行相应处理。在ApplicationContext抽象实现类AbstractApplicationContext中,存在一个ApplicationEventMulticaster,负责保存所有的监听器,以便容器产生上下文事件通知这些事件监听者。

MessageSource:为应用提供i18n国际化消息访问功能。

ResourceLoader:能够根据资源地址,判断资源类型,并返回相应的resource实现类,因为所有的上下文都需要装载资源,所以ApplicationContext扩展了该接口。

Lifecycle:该接口提供了start和stop方法,主要用于控制异步处理过程。在具体使用时,该接口同步被ApplicationContext和Bean实现。,ApplicationContext会将start/stop的信息传递个容器中的所有实现了该接口的Bean,达到控制和管理jmx,进行任务调度。

ConfigurableApplicationContext:扩展于ApplicationContext,其refresh和close方法使ApplicationContext拥有启动、刷新和关闭应用上下文的能力。在应用上下文关闭的情况下,调用refresh就可以启动应用上下文,在已经启动的情况下,调用refresh则清除缓存并重新装载配置信息,而调用close方法,则可以关闭应用上下文。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值