Я использую Spring Boot 2.0 и имею конечную точку в @RestController
, которая возвращает DeferredResult
, а в некоторых случаях (например, если требуется вычислить , а не необходимо вычислить), она устанавливаетрезультат на DeferredResult
прямо так:
@RequestMapping(value = "test")
public DeferredResult<String> test() {
DeferredResult<String> returnValue = new DeferredResult<>();
returnValue.setResult("Hello, World");
return returnValue;
}
К сожалению, возвращаемое тело HTTP пусто.Код состояния 200 показывает, что запрос не истек, и если я добавляю обработчик завершения к отложенному результату, также вызывается обработчик.
Проблема также не устраняется, когда яявным образом создайте новый поток и установите для него результат после небольшого периода ожидания.
Что я должен изменить, чтобы позволить правильному сериализации DeferredResult
?
Редактировать:
Как указано в комментариях, я включил ведение журнала отладки для Spring MVC и обнаружил следующие сообщения журнала:
DEBUG org.springframework.web.servlet.mvc.method.annotation.HttpEntityMethodProcessor - Written [ok] as "text/plain" using [org.springframework.http.converter.StringHttpMessageConverter@6b634d28]
DEBUG org.springframework.web.servlet.DispatcherServlet - Null ModelAndView returned to DispatcherServlet with name 'dispatcherServlet': assuming HandlerAdapter completed request handling
DEBUG org.springframework.web.servlet.DispatcherServlet - Successfully completed request
Сначала кажется, что результат записан правильно, но затем возвращается нулевой ModelAndViewк сервлету по какой-то причине.
Что может вызвать это?