【发布时间】:2016-05-28 01:38:47
【问题描述】:
我正在使用 MessagingGateway 对另一个服务执行 HTTP 调用。 这个端点返回一个数据片段(使用分页),问题是返回的结果是Page类型的,它是一个接口。我知道该接口的实现是PageImpl 类型的类,但问题是当我尝试反序列化它时,该类没有任何默认构造函数,因此它失败了。我可以创建一个包含所需属性的 POJO,这将解决问题,但我想知道是否有任何弹簧技巧可以让我以更好的方式解决这个问题。
这是我的消息网关配置示例:
Map<String, Expression> uriVariableExp = getDefaultEndpointProperties(host, apiKey);
SpelExpressionParser parser = new SpelExpressionParser();
uriVariableExp.put("parameter1", parser.parseExpression("payload.parameter1"));
String endpoint =
"{host}/resource?parameter1={parameter1}";
HttpRequestExecutingMessageHandler gateway = new HttpRequestExecutingMessageHandler(endpoint, getRestTemplate());
gateway.setRequiresReply(true);
gateway.setHttpMethod(HttpMethod.GET);
ParameterizedTypeReference<Page<ResourceModel>> typeReference = new ParameterizedTypeReference<Page<ResourceModel>>(){};
gateway.setExpectedResponseTypeExpression(new ValueExpression<>(typeReference));
gateway.setUriVariableExpressions(uriVariableExp);
return gateway;
如您所见,expectedResponseType 是我的问题,我尝试使用 PageImpl 但这会抛出找不到构造函数的错误。
【问题讨论】:
标签: java spring-data spring-integration spring-data-rest