天天看点

Spring学习笔记之ApplicationContext

<a href="https://s1.51cto.com/wyfs02/M01/A6/AE/wKioL1nYho6QUkG4AACCfECODXY726.png" target="_blank"></a>

<a href="https://s3.51cto.com/wyfs02/M00/A6/AE/wKioL1nYh6uDxqxkAAAlysy5K_M191.png" target="_blank"></a>

<a href="https://s3.51cto.com/wyfs02/M02/07/FD/wKiom1nYh_mjEQOAAAD8t-ei_Qs835.png" target="_blank"></a>

对于一个Application提供配置的核心接口,在应用运行的时候它是只读的。

一个ApplicationContext提供以下能力:

1、可以通过BeanFactory中的方法访问应用组件

2、可以加载文件资源

3、可以给已经注册的监听器发送事件

4、可以解析消息,支持国际化

5、可以从父级Context中继承,当然定义在子Context(或者叫后台Context)中的总是具有优先权。这意味着,比如说,一个单个的父级别的Context可以在整个Web Application中使用,每一个Servlet有自己的子上下文,而且是独立的,跟其它的Servlet没有关系。

    这句话什么意思呢,我的理解是:

    1、上下文是可以继承的,这样就是说,在子级别的上下文中可以使用父级别的上下文中所定义的Bean,当然前提是这两个上下文是父子关系。

    2、在一个Web上下文中可以访问其继承的父上下文

    3、每个Servlet可以有自己的上下文,而且Servlet彼此独立

    4、子上下文总是具有优先权,意味着,如果有子上下文中有一个和父上下文中相同的Bean,那么将优先访问子上下文中的这个Bean。

我们最初见到的是AnnotationConfigApplicationContext和ClassPathXmlApplicationContext,它们分别代表基于注解的ApplicationContext和基于Xml的ApplicationContext,下面分别看一下

<a href="https://s2.51cto.com/wyfs02/M00/07/FD/wKiom1nYjWvTWXcRAABUHWrNLiw607.png" target="_blank"></a>

<a href="https://s2.51cto.com/wyfs02/M02/A6/AF/wKioL1nYjR3j9sXwAAAt6B-fMek730.png" target="_blank"></a>

本文转自   手不要乱摸  51CTO博客,原文链接:http://blog.51cto.com/5880861/1970623