1. 程式人生 > >在web.xml正確加載spring配置文件的方式

在web.xml正確加載spring配置文件的方式

正常 div 示例 star extc 自定義 nco AR 導入

ssm框架整合時一直報出沒有創建實例bean的錯誤,一直以為是代碼原因,反復測試了很久,才找到原因是spring配置文件沒有正確導入,下圖是我的錯誤示例

技術分享圖片

web.xml加載spring配置文件的方式主要依據該配置文件的名稱和存放的位置不同來區別,目前主要有兩種方式。

1.如果spring配置文件的名稱為applicationContext.xml,並且存放在WEB-INF/目錄下,那麽只需要在web.xml中加入以下代碼即可

<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

該監聽器會自動掃描WEB-INF/ 下的applicationContext.xrnl 文件,這種方式多數用在只有一個配置文件的情況下。
還可以使用Spring的ContextLoaderServlet的這個特殊Servlet,實現代碼如下

<servlet>
  <servlet-name>context</servlet-name>
  <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-name>
  <load-on-startup>1(比較小的數字就可以)</load-on-startup>
</servlet>

上面的兩種方式都可以,不過二者有一些區別。

2.如果spring配置文件的名稱是自定義的其他名稱,比如為applicationContext-test.xml,也還是存放在WEB-INF/目錄下,那麽還需要配置contextConfigLocation這個參數,該參數是一個字符串,監聽器或者Servlet會自定將該字符串按照特定的字符(比如空格、逗號、分號)解析成多個文件。需要添加如下代碼:

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/application-testA.xml,/WEB-INF/application-testB.xml,/WEB-INF/application-testB.xml</param-value>
</context-param>

如果上面嫌得麻煩,可以使用通配符對上面進行簡寫如下

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/application*.xml</param-value>
</context-param>

然後再加入以上的監聽器或者servlet代碼就可以。

3.如果既沒有applicationContext.xml 文件,也沒有使用contextConfigLocation參數確定配置文件,或者contextConfigLocation確定的配置文件不存在。都將導致Spring 無法加載配置文件或無法正常創建ApplicationContext 實例.

正確示例技術分享圖片

轉載:http://www.cnblogs.com/zjhs/archive/2012/10/26/2741228.html

在web.xml正確加載spring配置文件的方式