Spring MVC –自定义RequestMappingHandlerMapping

在xml bean定义文件中使用配置Spring MVC时,在内部将一个名为RequestMappingHandlerMapping的组件注册到Spring MVC。 该组件或通常是HandlerMapping组件负责将请求URI路由到处理程序,这些处理程序是使用@RequestMapping注释进行注释的控制器方法。

RequestMappingHandlerMapping中有两个可能不直观的特定配置:

第一个配置是'useSuffixPatternMatch',如果说uri'/ members'映射到方法以返回实体列表,则'/members.xyz'将映射到相同的处理程序方法。
第二个配置是“ useTrailingSlashMatch”,即“ / members”和“ / members /”将映射到相同的处理程序方法。
如果需要修改这两种行为,则方法是配置RequestMappingHandlerMapping。

如果已使用定义RequestMappingHandlerMapping,那么执行此操作的笨拙方法将是删除,然后通过扩展可获取以下内容的组件来配置Spring MVC由处理“ mvc”名称空间的自定义名称空间处理程序注册,这是沿着这些方面的东西(这还不完整,只是为了说明配置的复杂性而显示):


 
  
   
   
    
   
  
 
 
  
   
   
   
   
   
   
   
  
 



 

绝对不是更改配置的好方法。 相反,如果面对配置RequestMappingHandlerMapping的需要,一种更好的方法是通过以下方式将部分或整个Web-MVC配置移动到Java @Configuration:

package mvcsample.spring;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;

@Configuration
public class WebConfig extends WebMvcConfigurationSupport{
 @Bean
 public RequestMappingHandlerMapping requestMappingHandlerMapping() {
  RequestMappingHandlerMapping handlerMapping = super.requestMappingHandlerMapping();
  handlerMapping.setUseSuffixPatternMatch(false);
  handlerMapping.setUseTrailingSlashMatch(false);
  return handlerMapping;
 } 
}

并将此配置导入到配置xml的其余部分中(还有其他记录的方法):



因此,@Configuration提供了一种更简单的机制来配置Spring MVC中的组件,强烈建议从基于xml的配置迁移到Java配置,以简化配置和管理定制。

参考: Spring MVC –来自all和杂类博客的JCG合作伙伴 Biju Kunjummen 自定义RequestMappingHandlerMapping 。

翻译自: https://www.javacodegeeks.com/2013/01/spring-mvc-customizing-requestmappinghandlermapping.html

你可能感兴趣的:(Spring MVC –自定义RequestMappingHandlerMapping)