Контроллер Spring Boot 2 возвращает вызываемый объект, но HTTP-ответ остается пустым - PullRequest
0 голосов
/ 29 сентября 2019

Я нахожусь в процессе миграции проекта Spring Boot 1.5 на Spring Boot 2.1.8 (JDK 1.8, Kotlin 1.3.50).

У меня есть несколько контроллеров, методы которых выглядят следующим образом:

@PostMapping("post")
fun post(@RequestBody input: String): Callable<JsonNode> {
    return Callable {
        requestAsJson(input)
    }
}

Это хорошо работает в Spring Boot 1.5, без дальнейшей настройки. Однако в Spring Boot 2.1.8 вызов не происходит, но ответ HTTP остается пустым.

Когда я использую start.spring.io для создания минималистического примера, он работает нормально, поэтому я предполагаю, что естьчто-то не так в моей конфигурации.

Когда я включаю трассировки отладки для Spring MVC, последняя трасса, которую я получаю:

[nio-8080-exec-3] m.m.a.RequestResponseBodyMethodProcessor : Writing [{"data":{"...
[nio-8080-exec-3] o.s.web.servlet.DispatcherServlet        : Exiting from "ASYNC" dispatch, status 200

Так что это выглядит хорошо для меня, но по-прежнему нет ответаполучил (используя Curl или Postman для тестирования).

Сейчас я немного растерялся, поскольку в Spring Boot 1.5 это работало как чудо, и я пытаюсь получить подсказку о том, как получитьиз этой проблемы.

Спасибо за любую помощь, Дэмиен

1 Ответ

0 голосов
/ 30 сентября 2019

Я объявил bean-компонент ShallowEtagHeaderFilter следующим образом в моем WebMvcConfigurer:

@Bean
fun shallowEtagHeaderFilter(): ShallowEtagHeaderFilter {
   return ShallowEtagHeaderFilter()
}

Хотя в Spring Boot 1.5 это работало нормально, это вызывает асинхронные методы контроллера (возвращая Callable) чтобы больше не возвращать контент. Удаление этого bean-компонента для Spring Boot 2.1 восстанавливает нормальное поведение.

Мне все еще нужно искать способ получить свой электронный тег, но пока это решает существующую проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...