使用 MockMvc 自定义 RequestMappingHandlerMapping
Custom RequestMappingHandlerMapping with MockMvc
我有一个自定义 RequestMappingHandlerMapping class,它将特殊注释解释为其映射标准的一部分。因此,它被实例化为一个 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 以使用此自定义映射处理程序?
How can I configure MockMvc to use this custom mapping handler?
从 Spring Framework 4.3.x 开始,目前无法使用 MockMvc
的 standaloneSetup()
构建器注册自定义 RequestMappingHandlerMapping
。
但是,该团队正在考虑在 Spring Framework 5.0 中添加此类支持。
有关详细信息,请参阅 SPR-15472。
您可以通过覆盖WebMvcConfigurerAdapter 的getRequestMappingHandlerMapping 方法进行配置。
@Configuration
public class ConfigServletConfig extends WebMvcConfigurerAdapter {
@Override
public RequestMappingHandlerMapping getRequestMappingHandlerMapping() {
RequestMappingHandlerMapping handlerMapping = new VersionRangeRequestMappingHandlerMapping();
handlerMapping.setOrder(0);
return handlerMapping;
}
}
对于那些仍在搜索中的人,自从 Spring 更新到版本 5.0(我相信)以来,引入了自定义 MockMvc requestHandlerMapping 配置。
用法示例:
MockMvcBuilders.standaloneSetup(new MyAwesomeController())
.setCustomHandlerMapping(() -> new MyAwesomeRequestMappingHandlerMapping())
.build();
我有一个自定义 RequestMappingHandlerMapping class,它将特殊注释解释为其映射标准的一部分。因此,它被实例化为一个 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 以使用此自定义映射处理程序?
How can I configure MockMvc to use this custom mapping handler?
从 Spring Framework 4.3.x 开始,目前无法使用 MockMvc
的 standaloneSetup()
构建器注册自定义 RequestMappingHandlerMapping
。
但是,该团队正在考虑在 Spring Framework 5.0 中添加此类支持。
有关详细信息,请参阅 SPR-15472。
您可以通过覆盖WebMvcConfigurerAdapter 的getRequestMappingHandlerMapping 方法进行配置。
@Configuration
public class ConfigServletConfig extends WebMvcConfigurerAdapter {
@Override
public RequestMappingHandlerMapping getRequestMappingHandlerMapping() {
RequestMappingHandlerMapping handlerMapping = new VersionRangeRequestMappingHandlerMapping();
handlerMapping.setOrder(0);
return handlerMapping;
}
}
对于那些仍在搜索中的人,自从 Spring 更新到版本 5.0(我相信)以来,引入了自定义 MockMvc requestHandlerMapping 配置。
用法示例:
MockMvcBuilders.standaloneSetup(new MyAwesomeController())
.setCustomHandlerMapping(() -> new MyAwesomeRequestMappingHandlerMapping())
.build();