0

我有一个 FeignClient 类,我想使用 MatrixVariable 传递如下参数

@FeignClient(value = "apiService", url = "${api.url}", configuration =ApiServiceConfiguration.class)
public interface ApiServiceFeign {
    @RequestMapping(value = "/students{matrixParam}", method = RequestMethod.GET)
    StudentList getStudents(@MatrixVariable("matrixParam") Map<String,List<String>>);
}

但是当我使用上面的代码时它不起作用。Feign Client 无法理解 MatrixVariable。有没有办法打这个电话?

目前,我找到了使用 PathVariable 的临时解决方案,如下所示

@FeignClient(value = "apiService", url = "${api.url}", configuration =ApiServiceConfiguration.class)
public interface ApiServiceFeign {
    @RequestMapping(value = "/students;name={name};accountId={accountId}", method = RequestMethod.GET)
    StudentList getStudents(@PathVariable("name") String name,@PathVariable("accountId") Long accountId);
}

如果有人在 Feignclient 中使用 MatrixVariable 提供更好的解决方案,我真的很感激

4

1 回答 1

0

您必须在 spring 中启用矩阵变量的使用。这可以通过以下方式完成。

请注意,要启用矩阵变量,您必须将RequestMappingHandlerMapping的removeSemicolonContent属性设置为false。默认情况下,它设置为 true。

MVC Java 配置和 MVC 命名空间都提供了启用矩阵变量的选项。如果您使用的是 Java 配置,使用 MVC Java 配置的高级自定义部分描述了如何自定义 RequestMappingHandlerMapping。

在 MVC 命名空间中,该元素具有应设置为 true 的 enable-matrix-variables 属性。默认情况下,它设置为 false。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <mvc:annotation-driven enable-matrix-variables="true"/>

</beans>
于 2017-07-05T11:41:47.930 回答