- ApplicationContext
如果你沒有在web.xml檔中,使用contextConfigLocation參數指定context設定檔的話,Spring會在應用程式啟動時,至WEB-INF目錄中尋找applicationContext.xml檔,找不到時則會丟出FileNotFoundException 例外。
在Spring的BeanFactory生命週期裡,ApplicationContext會偵測並呼叫所有有實作ApplicationContextAware的bean。
- WebApplicationContext
簡單來說,1個DispatcherServlet擁有1個對應的WebApplicationContxt;每個DispatcherServlet有自己的xxx-servlet.xml設定檔;單個web應用程式是在web.xml檔裡,設定多個DispatcherServlet來負責處理reqeust。
Spring預設會載入WEB-INF目錄下的“xxx-servlet.xml”檔,xxx為在web.xml中的servlet名稱,你亦可在web.xml中使用contextConfigLocation參數,來改變xml檔的檔名或路徑。
WebApplicationContext 的實作會偵測所有有實作ServletContextAware界面的bean,並呼叫其setServletContext方法。
Spring ContextLoaderListener And DispatcherServlet Concepts這篇文章有實際的ApplicationContext設定舉例說明,及更詳盡的Spring web應用程式啟動的運作介紹,有興趣的話,可以參考。
參考文章:
1) http://stackoverflow.com/a/29629824
2) Interface ApplicationContext
3) Interface WebApplicationContext