我有一个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提供更好的解决方案,我真的很感激
答案 0 :(得分:0)
您必须在春季启用matrix variables usage。这可以通过以下方式完成。
请注意,要启用矩阵变量,必须将 RequestMappingHandlerMapping 的 removeSemicolonContent 属性设置为 false 。默认情况下,它设置为true。
MVC Java配置和MVC命名空间都提供了启用矩阵变量使用的选项。 如果您使用的是Java配置,则“使用MVC Java配置进行高级自定义”部分介绍了如何自定义RequestMappingHandlerMapping。
在MVC名称空间中,元素具有enable-matrix-variables属性,该属性应设置为true。默认情况下,它设置为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>