与web.xml中的contextConfigLocation相关的混淆

时间:2017-07-30 17:19:41

标签: spring spring-mvc web.xml

我创建了一个简单的Hello World Spring MVC项目。

我在web.xml中添加了以下行

<init-param>
 <param-name>contextConfigLocation</param-name>
 <param-value>/WEB-INF/spring-servlet.xml</param-value>         
</init-param>

我的代码没有这些代码。我不明白添加这些行的目的。任何人都可以用简单的语言向我解释它的用法。

3 个答案:

答案 0 :(得分:1)

默认情况下,Spring会查找以下文件来加载其Web上下文:

{my-sevlet-name}-servlet.xml

所以你似乎在命名你的春天DispatcherServlet&#39;春天&#39;。在这种情况下,Spring只会加载spring-servlet.xml,你提到的行根本不会影响应用。

答案 1 :(得分:1)

在初始化DispatcherServlet时,查找名为的文件 Web应用程序的WEB-INF目录中的[servlet-name] -servlet.xml,并创建在那里定义的bean(覆盖在全局范围内使用相同名称定义的任何bean的定义)。

例如,

<web-app>
  <servlet>
   <servlet-name>
       spring
   </servlet-name>
       <servlet-lass>org.springframework.web.servlet.DispatcherServlet
   </servlet-class>
   <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>
       spring
    </servlet-name>
   <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>

使用上面的servlet配置,您需要有一个名为&#39; / WEB-INF / spring -servlet.xml&#39;它将自动被选中。

但是对于不同的servlet名称和配置文件名或位置,我们必须在初始化Dispatcher servlet时提供文件名和位置,如下所示。

<web-app>
    <servlet>
        <servlet-name>SpringController</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>SpringController</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
</web-app>

(这里的servlet名称是 SpringController ,配置文件名是 spring-servlet.xml 。甚至,在这里你可以使用配置文件的任何名称,例如,<强> my_spring_mvc_configurtaion.xml

答案 2 :(得分:0)

初始化参数contextConfigLocation告诉Spring在哪里加载配置文件。如果它在没有web.xml中的代码的情况下工作意味着你的java代码中的某个地方正在加载这个配置文件。