当前位置: 首页 > 知识库问答 >
问题:

使用MockMvc自定义Request MappingHandler映射

苏雅珺
2023-03-14

我有一个自定义的Request estMappingHandlerMap类,它将特殊注释解释为其映射条件的一部分。因此它被实例化为bean:

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

但是当我创建一个MockMvc对象进行测试时(使用Standard aloneSetup),没有使用这个映射处理程序。如果不考虑额外的注释,映射会失败,因为我有多个具有相同@Request estMap的控制器方法。注释是区分它们的原因。

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

共有3个答案

有凯泽
2023-03-14

您可以使用覆盖WebMvcConfigrerAdapter的getRequest estMappingHandlerMap方法进行配置。

@Configuration
public class ConfigServletConfig extends WebMvcConfigurerAdapter {

    @Override
    public RequestMappingHandlerMapping getRequestMappingHandlerMapping() {
        RequestMappingHandlerMapping handlerMapping = new VersionRangeRequestMappingHandlerMapping();
        handlerMapping.setOrder(0);
        return handlerMapping;
    }
}
吕冠宇
2023-03-14

对于那些仍在搜索中的人来说,自从Spring更新到5.0版(我相信)之后,就引入了定制的MockMvc requestHandlerMapping配置。

用法示例:

MockMvcBuilders.standaloneSetup(new MyAwesomeController())
        .setCustomHandlerMapping(() -> new MyAwesomeRequestMappingHandlerMapping())
        .build();
秦渝
2023-03-14

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

从Spring框架4.3开始。x、 目前无法使用standaloneSetup()builder forMockMvc注册自定义RequestMappingHandlerMapping

然而,该团队正在考虑在Spring Framework 5.0中添加此类支持。

有关更多详细信息,请参阅SPR-15472。

 类似资料:
  • 我有两个对象,除了date成员外,其他成员都相同。在obj1中,date是java.sql.date,obj2.date是long(纪元)。 我需要编写一个映射器来将obj1映射到obj2。这就是我试图做的: 但是mapperImpl只有自己的日期转换实现: 我得到了: 这种转换的正确方式是什么?

  • 问题内容: 我是XMPP的新手,如果这个问题听起来很傻,请原谅我。我想创建一个自定义插件,并将其与Android上的aSmack客户端进行映射。我正在尝试运用我对Web服务的知识,但没有成功。因此,请引导我思考最佳方法,一个示例将非常有帮助。提前感谢。 问题答案: 有很多类型的插件,让我们大致来讲一下。 Igniterealtime插件指南 您想定义一个全新的IQ Stanza来管理UserCus

  • 我想在从AbstractEndPoint派生的endpoint上使用不同的jackson ObjectMapper实例(而不是在其他映射URL上使用的实例)。 为了澄清这个问题,我不想更改或自定义对象映射器,它由不同的URL使用,不同的URL来自AbstractEndpoints(如HealtEndpoint、MetricsEndpoint)。我想专门将新的对象映射器注入到管理endpoint中。

  • 我正在为我的Spring MVC控制器设置单元测试,并试图利用Spring MVC测试框架。对于控制器中的每个endpoint,我希望确保只有具有指定权限的用户才能访问。我的问题是,在使用mockMvc工具解决这个问题时,我使用了一个自定义用户实现,并获得了类强制转换异常。 对于每个请求,我希望它看起来像这样: 我想以某种方式调整上述语句,以指定我的自定义用户主体。请参见下面Spring的用户方法

  • 以下是我的上下文:我使用byteBuddy动态生成一个类,该类根据外部配置将一个对象转换为另一个对象。我遇到了一些问题,我想找到一个替代方案,这就是我发现MapStruct的方式。 因此,我试图构建简单的映射器,我想知道是否有可能自定义注释以添加转换函数。例如,我想要: 在mapper实现中,我会有如下内容: 如果有人能帮我做到这一点,我将不胜感激,这将节省我很多时间。 提前谢谢。

  • 本文向大家介绍apache-spark 使用Gson将JSON映射到自定义类,包括了apache-spark 使用Gson将JSON映射到自定义类的使用技巧和注意事项,需要的朋友参考一下 示例 使用Gson,您可以读取JSON数据集并将其映射到自定义类MyClass。 由于Gson不可序列化,因此每个执行程序都需要自己的Gson对象。而且,MyClass必须可序列化才能在执行程序之间传递。 请注意