ContextLoaderListener作用詳解
ContextLoaderListener監聽器的作用就是啟動Web容器時,自動裝配ApplicationContext的配置資訊。因為它實現了ServletContextListener這個介面,在web.xml配置這個監聽器,啟動容器時,就會預設執行它實現的方法。至於ApplicationContext.xml這個配置檔案部署在哪,如何配置多個xml檔案,書上都沒怎麼詳細說明。現在的方法就是檢視它的API文件。在ContextLoaderListener中關聯了ContextLoader這個類,所以整個載入配置過程由ContextLoader來完成。看看它的API說明。
第一段說明ContextLoader可以由 ContextLoaderListener和ContextLoaderServlet生成。如果檢視ContextLoaderServlet的API,可以看到它也關聯了ContextLoader這個類而且它實現了HttpServlet這個介面。
第二段,ContextLoader建立的是 XmlWebApplicationContext這樣一個類,它實現的介面是WebApplicationContext->ConfigurableWebApplicationContext->ApplicationContext->BeanFactory這樣一來spring中的所有bean都由這個類來建立
第三段,講如何部署applicationContext的xml檔案。
如果在web.xml中不寫任何引數配置資訊,預設的路徑是/WEB-INF/applicationContext.xml,在WEB-INF目錄下建立的xml檔案的名稱必須是applicationContext.xml;
如果是要自定義檔名可以在web.xml里加入contextConfigLocation這個context引數:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/applicationContext-*.xml
</param-value>
</context-param>
在<param-value> </param-value>裡指定相應的xml檔名,如果有多個xml檔案,可以寫在一起並一“,”號分隔。上面的applicationContext-*.xml採用萬用字元,比如這那個目錄下有applicationContext-ibatis-base.xml,applicationContext-action.xml,applicationContext-ibatis-dao.xml等檔案,都會一同被載入。
由此可見applicationContext.xml的檔案位置就可以有兩種預設實現:
第一種:直接將之放到/WEB-INF下,之在web.xml中宣告一個listener;
第二種:將之放到classpath下,但是此時要在web.xml中加入<context-param>,用它來指明你的applicationContext.xml的位置以供web容器來載入。按照Struts2 整合spring的官方給出的檔案,寫成:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value>
</context-param>
相關文章
- spring ContextLoaderListener的作用SpringContext
- extern作用詳解
- JavaScript作用域詳解JavaScript
- java中static作用詳解Java
- php中declare的作用詳解PHP
- 【轉】ContextLoaderListener 和 DispatcherServletContextServlet
- @Transactional詳解(作用、失效場景與解決方法)
- 關於C++中物件與類的詳解及其作用詳解C++物件
- 詳解 MySql InnoDB 中意向鎖的作用MySql
- Function.prototype.call.apply作用詳解FunctionAPP
- Spring-bean作用域scope詳解SpringBean
- 交換機的作用、功能和工作原理詳解
- 詳解python的super()的作用和原理Python
- Maven中的dependency的scope作用域詳解Maven
- Java中static變數作用和用法詳解Java變數
- 詳解數字簽名的含義及作用
- 詳解 JS 變數、作用域及記憶體JS變數記憶體
- JavaScript 變數、作用域及記憶體詳解JavaScript變數記憶體
- No WebApplicationContext found: no ContextLoaderListener or DispatcherServlet registeredWebAPPContextServlet
- ES6深入學習(一)塊級作用域詳解
- Angular中innerHTML標籤的樣式不起作用詳解AngularHTML
- 詳解Spring中Bean的作用域與生命週期SpringBean
- Linux系統下各個目錄的作用詳解!Linux
- android Activity的啟動模式 作用簡析+demo詳解Android模式
- android 混淆規則作用,Android程式碼混淆詳解Android
- Python作用域詳述Python
- 什麼是閘道器?閘道器的作用是什麼,閘道器的作用詳解
- Go 程式碼塊與作用域,變數遮蔽問題詳解Go變數
- 圖解javascript作用域圖解JavaScript
- 電腦記憶體條的作用、選購技巧以及注意事項詳解記憶體
- 詳解執行緒池的作用及Java中如何使用執行緒池執行緒Java
- java虛擬機器記憶體區域的劃分以及作用詳解Java虛擬機記憶體
- js 變數的作用域詳解、生存週期,以及一些小細節。JS變數
- ES6 變數作用域與提升:變數的生命週期詳解變數
- 註解式專案開發!詳細解析Java中各個註解的作用和使用方式Java
- (摘)sql-索引的作用(超詳細)SQL索引
- spring @component 的作用詳細介紹Spring
- 虛解構函式的作用函式