码迷,mamicode.com
首页 > 编程语言 > 详细

在web.xml正确加载spring配置文件的方式

时间:2018-05-04 22:24:46      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:代码   http   lis   info   两种   测试   解析   方式   org   

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配置文件的方式

标签:代码   http   lis   info   两种   测试   解析   方式   org   

原文地址:https://www.cnblogs.com/lzxin/p/8992737.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!