Ваша проблема в том, что DefaultHttpHeaderMapper
пусто по умолчанию. Я думаю, что настало время сделать ctor как deprecated
, чтобы не допустить его использования из конечного приложения.
Или сделать некоторую проверку, чтобы отклонить просто пусто (не настроено) DefaultHttpHeaderMapper
...
Также сбивает с толку, какой смысл использовать это return new DefaultHttpHeaderMapper();
, если вы не настраиваете его. В HttpRequestHandlingMessagingGateway
есть значение по умолчанию:
private HeaderMapper<HttpHeaders> headerMapper = DefaultHttpHeaderMapper.inboundMapper();
Чтобы исправить вашу проблему, вам обязательно нужно использовать фабричный метод inboundMapper()
, который делает это:
/**
* Factory method for creating a basic inbound mapper instance.
* This will map all standard HTTP request headers when receiving an HTTP request,
* and it will map all standard HTTP response headers when sending an HTTP response.
* @return The default inbound mapper.
*/
public static DefaultHttpHeaderMapper inboundMapper() {
DefaultHttpHeaderMapper mapper = new DefaultHttpHeaderMapper();
setupDefaultInboundMapper(mapper);
return mapper;
}
Это setupDefaultInboundMapper()
очень важно: оно предоставляет нам набор заголовков для сопоставления запроса и ответа.