1

我有一個自定義的RequestMappingHandlerMapping類,它將特殊註釋解釋爲其映射條件的一部分。它被實例化一個bean正是如此:使用MockMvc自定義RequestMappingHandlerMapping

@Configuration 
@EnableWebMvc 
public class ConfigServletConfig extends WebMvcConfigurerAdapter { 
    @Bean 
    public RequestMappingHandlerMapping requestMappingHandlerMapping() { 
     RequestMappingHandlerMapping handlerMapping = new VersionRangeRequestMappingHandlerMapping(); 
     handlerMapping.setOrder(0); 
     return handlerMapping; 
    } 
} 

但是,當我創建一個用於測試的MockMvc對象(standaloneSetup)不使用這個映射處理程序。如果沒有考慮額外的註釋,映射失敗,因爲我有多個具有相同@RequestMapping的控制器方法。註釋是區分它們的。

如何配置MockMvc以使用此自定義映射處理程序?

回答

1

如何配置MockMvc以使用此自定義映射處理程序?

由於Spring框架的4.3.x的,它是目前不可能與standaloneSetup()建設者MockMvc註冊自定義RequestMappingHandlerMapping

但是,團隊正在考慮在Spring Framework 5.0中添加這樣的支持。

查看SPR-15472瞭解更多詳情。

0

您可以使用WebMvcConfigurerAdapter的重寫getRequestMappingHandlerMapping方法進行配置。

@Configuration 
public class ConfigServletConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public RequestMappingHandlerMapping getRequestMappingHandlerMapping() { 
     RequestMappingHandlerMapping handlerMapping = new VersionRangeRequestMappingHandlerMapping(); 
     handlerMapping.setOrder(0); 
     return handlerMapping; 
    } 
}