如何在 spring 集成中进行响应负载记录和转换。?
How to do response payload logging and conversion in spring integration.?
我已经设置了 expectedResponseType(MyClass.class)。所以 OutboundGateway 正在将消息转换为我的响应 class 类型并返回给我。我还想记录有效负载以用于调试目的以及转换。
如何进行此响应负载记录和转换。?
我可以通过期望响应为 String 并稍后使用编组器转换为我的 class 来做到这一点。有没有更简单的方法可以用于我所有的出站网关?
expectedResponseType(MyClass.class)
被翻译成
httpResponse = this.restTemplate.exchange(realUri, httpMethod, httpRequest, (Class<?>) expectedResponseType);
最后一个这样做的地方:
public ResponseEntityResponseExtractor(Type responseType) {
if (responseType != null && Void.class != responseType) {
this.delegate = new HttpMessageConverterExtractor<T>(responseType,
getMessageConverters(), logger);
}
else {
this.delegate = null;
}
}
如您所见,它正在将自己的 logger
复制到 HttpMessageConverterExtractor
。
因此,我认为您可以针对 org.springframework.web.client.RestTemplate
类别打开 DEBUG
(甚至 TRACE
)来满足您的 logging
要求。
从另一边,您总是可以稍微扩展 RestTemplate
以使其成为一些挂钩。
从Spring集成的角度来看,我们无能为力。因为整个硬转换工作是在 RestTemplate
.
中完成的
我已经设置了 expectedResponseType(MyClass.class)。所以 OutboundGateway 正在将消息转换为我的响应 class 类型并返回给我。我还想记录有效负载以用于调试目的以及转换。
如何进行此响应负载记录和转换。?
我可以通过期望响应为 String 并稍后使用编组器转换为我的 class 来做到这一点。有没有更简单的方法可以用于我所有的出站网关?
expectedResponseType(MyClass.class)
被翻译成
httpResponse = this.restTemplate.exchange(realUri, httpMethod, httpRequest, (Class<?>) expectedResponseType);
最后一个这样做的地方:
public ResponseEntityResponseExtractor(Type responseType) {
if (responseType != null && Void.class != responseType) {
this.delegate = new HttpMessageConverterExtractor<T>(responseType,
getMessageConverters(), logger);
}
else {
this.delegate = null;
}
}
如您所见,它正在将自己的 logger
复制到 HttpMessageConverterExtractor
。
因此,我认为您可以针对 org.springframework.web.client.RestTemplate
类别打开 DEBUG
(甚至 TRACE
)来满足您的 logging
要求。
从另一边,您总是可以稍微扩展 RestTemplate
以使其成为一些挂钩。
从Spring集成的角度来看,我们无能为力。因为整个硬转换工作是在 RestTemplate
.