天天看點

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