如何在 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.

中完成的