我有一个自定义RequestMappingHandlerMapping类,它将特殊注释解释为其映射条件的一部分。它正在被实例化为bean:
@Configuration
@EnableWebMvc
public class ConfigServletConfig extends WebMvcConfigurerAdapter {
@Bean
public RequestMappingHandlerMapping requestMappingHandlerMapping() {
RequestMappingHandlerMapping handlerMapping = new VersionRangeRequestMappingHandlerMapping();
handlerMapping.setOrder(0);
return handlerMapping;
}
}
但是当我创建一个MockMvc对象进行测试时(使用standaloneSetup),这个映射处理程序并没有被使用。如果没有考虑额外的注释,映射将失败,因为我有多个具有相同@RequestMapping的控制器方法。注释是区分它们的原因。
如何配置MockMvc以使用此自定义映射处理程序?
答案 0 :(得分:1)
如何配置MockMvc以使用此自定义映射处理程序?
从Spring Framework 4.3.x开始,目前无法使用RequestMappingHandlerMapping
的{{1}}构建器注册自定义standaloneSetup()
。
但是,该团队正在考虑在Spring Framework 5.0中添加此类支持。
有关详细信息,请参阅SPR-15472。
答案 1 :(得分:1)
对于那些仍在搜索中的用户,自从Spring更新到版本5.0(我相信)以来,就引入了自定义MockMvc requestHandlerMapping配置。
用法示例:
MockMvcBuilders.standaloneSetup(new MyAwesomeController())
.setCustomHandlerMapping(() -> new MyAwesomeRequestMappingHandlerMapping())
.build();
答案 2 :(得分:0)
您可以使用WebMvcConfigurerAdapter的覆盖getRequestMappingHandlerMapping方法进行配置。
@Configuration
public class ConfigServletConfig extends WebMvcConfigurerAdapter {
@Override
public RequestMappingHandlerMapping getRequestMappingHandlerMapping() {
RequestMappingHandlerMapping handlerMapping = new VersionRangeRequestMappingHandlerMapping();
handlerMapping.setOrder(0);
return handlerMapping;
}
}