【问题标题】:Confusion related to contextConfigLocation in web.xmlweb.xml 中与 contextConfigLocation 相关的混淆
【发布时间】:2017-07-30 17:19:41
【问题描述】:

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

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

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

我的代码在没有这些行的情况下工作。我不明白添加这些行的目的。谁能用简单的话解释一下它的用法。

【问题讨论】:

    标签: spring spring-mvc web.xml


    【解决方案1】:

    在 DispatcherServlet 初始化时,查找名为 [servlet-name]-servlet.xml 在您的 Web 应用程序的 WEB-INF 目录中并创建在那里定义的 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 配置,您将需要一个名为 '/WEB-INF/spring-servlet.xml' 的文件,它会自动选择。

    但是对于不同的 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)

    【讨论】:

    • @Joginder Pawan 在我看来,我早在 12 小时前得到了相同的答案:)
    • @Dmittry Senkovich,您之前回答过,但这不是问题的实际要求。他实际上想知道 中 contextConfigLocation 的意义。
    • 我的意思是一切都好,伙计,我当时还不够清楚)
    【解决方案2】:

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

    {my-sevlet-name}-servlet.xml
    

    看来您将 Spring 的 DispatcherServlet 命名为“spring”。在这种情况下,Spring 仅加载 spring-servlet.xml,您提到的行根本不会影响应用程序。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2023-03-31
        • 2015-01-19
        • 1970-01-01
        • 1970-01-01
        • 2016-12-18
        • 1970-01-01
        • 2015-11-09
        • 1970-01-01
        • 2018-02-03
        相关资源
        最近更新 更多