ApplicationContext介绍:
如果说BeanFactory是Spring的“心脏”,那么ApplicationContext 就是完整的“身躯”了。ApplicationContext由BeanFactory派生而来,提供了更多面向实际应用的功能。在BeanFactory中,很多功能需要以编程的方式实现,而在ApplicationContext中则可以通过配置的方式实现。
1. ApplicationContext 类体系结构
ApplicationContext的主要实现类是ClassPathXmlApplicationContext 和FileSystemXmlApplicationContext,前者默认从类路径加载配置文件,后者默认从文件系统中装载配置文件。下面了解一下 ApplicationContext的类继承体系,如图
从图可以看出,ApplicationContext 继承了HierarchicalBeanFactory 和ListableBeanFactory接口,在此基础上,还通过多个其他的接口扩展了BeanFactory 的功能。这些接口如下。
1、ApplicationEventPublisher: 让容器拥有发布应用上下文事件的功能,包括容器启动事件、关闭事件等。实现了ApplicationListener 事件监听接口的Bean可以接收到容器事件,并对事件进行响应处理。在ApplicationContext 抽象实现类
ArtitaplicatiContet中存在一个AipioinMiacaste它负责保存所有的监听器,以便在容器产生上下文事件时通知这些事件监听者。
2、MessageSource: 为应用提供il8n国际化消息访问的功能。
3、ResourcePattermResolver: 所有ApplicationContext 实现类都实现了类似于
PathMatchingResourcePattermResolver的功能,可以通过带前缀的Ant风格的资源文件路径装载Spring的配置文件。
4、LifeCycle: 该接口提供了start0和stop0两个方法,主要用于控制异步处理过程。在具体使用时,该接口同时被ApplicationContext 实现及具体Bean 实现,ApplicationContext会将start/stop 的信息传递给容器中所有实现了该接口的Bean,以达到管理和控制JMX、任务调度等目的。
ConfigurableApplicationContext扩展于ApplicationContext,它新增了两个主要的方法: refresh0和 close0,让ApplicationContext具有启动、刷新和关闭应用上下文的能力。在应用上下文关闭的情况下调用refre