Spring MVC配置启用

时间:2015-04-01 15:12:28

标签: java spring spring-mvc configuration

我正在设置一个划痕项目,目前我正在使用java config配置Spring MVC 4.1.5。整个应用程序正在tomcat gradle插件上运行。

有人可以解释一下为什么我需要对类DefaultServletHandlerConfigurer进行以下调用才能将请求映射到我的控制器?

@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    configurer.enable();
}

如果没有启用它,我的所有请求都会被拒绝,服务器说没有特定请求的映射。

我读了春天doc以找出答案,但描述并没有告诉我太多。

  

启用转发到“默认”Servlet。使用此方法时   DefaultServletHttpRequestHandler将尝试自动检测   “默认”Servlet名称。或者,您可以指定名称   默认Servlet通过enable(String)。

1 个答案:

答案 0 :(得分:6)

在Spring MVC部分文档here中已经很好地解释了它。

  

这允许将DispatcherServlet映射到“/”(从而覆盖   容器的默认Servlet的映射,同时仍然允许   静态资源请求由容器的默认值处理   Servlet的。它使用URL配置DefaultServletHttpRequestHandler   映射“/ **”和相对于其他URL的最低优先级   映射。

     

此处理程序将所有请求转发到默认Servlet。   因此,重要的是它保持最后的顺序   其他URL HandlerMappings。如果你使用的话就是这种情况    或者,如果你正在设置你的   自己定制的HandlerMapping实例一定要设置它的顺序   属性值低于   DefaultServletHttpRequestHandler,它是Integer.MAX_VALUE。

这段代码等同于通常定义为servletname-servlet.xml的Spring Web MVC特定组件文件中的xml行<mvc:default-servlet-handler/>

你必须使用那个调用来配置转发到Spring默认的Servlet,如果你不让你的服务器尝试使用他自己的servlet处理,如你所解释的,如果你没有任何特定的定义它将找不到您的请求的任何映射。