WebClient vs RestTemplate

Согласно spring 5:

WebClient - это интерфейс, представляющий основную точку входа для выполнения веб-запросов.

Он был создан как часть модуля spring Web Reactive и будет заменять классический RestTemplate в этих сценариях. Новый клиент - это реактивное, неблокирующее решение, которое работает по протоколу HTTP/1.1

Означает ли это, что мы должны перекодировать старые приложения с помощью RestTemplate, если мы хотим перейти на spring 5?

Или существует некоторое обходное решение для работы с RestTemplate в spring 5?

Ответ 1

Нет, RestTemplate будет продолжать существовать (по крайней мере, пока). Вам не нужно заменять его на WebClient.
 Одним из основных отличий является то, что RestTemplate является синхронным и блокирует. Т.е., когда вы делаете звонок покоя, вам нужно подождать, пока ответ не вернется, чтобы продолжить.

Но WebClient является полной противоположностью этому. Звонящий не должен ждать, пока ответ не вернется. Вместо этого он будет уведомлен, когда есть ответ.

Если вам нужна такая функциональность, тогда да, вам нужно заменить Resttemplate на WebClient.
Вы можете изменить шаблон Rest, например, синхронную обработку в веб-клиенте, используя .block(). Но другой путь невозможен.

Ответ 2

Согласно Java Doc RestTemplate будет устаревшим. Команда Spring рекомендует использовать WebClient, если это возможно:

ПРИМЕЧАНИЕ. Начиная с 5.0, неблокирующая, реактивная org.springframework.web.reactive.client.WebClient предлагает современный альтернатива RestTemplate с эффективной поддержкой синхронизации и асинхронные, а также потоковые сценарии. RestTemplate будет не рекомендуется в будущей версии и не будет иметь новых важных функций добавил идти вперед.

Ответ 3

WebClient является неблокирующим клиентом, RestTemplate является блокирующим клиентом.

Spring долгое время служит веб-клиентом. В RestTemplate используется API Java API, основанный на предметной модели. Это означает, что вопрос будет заблокирован, пока клиент не получит ответ. Проблема с кодом блокировки связана с наличием любой строки памяти и циклов процессора. Давайте рассмотрим множество приложений, которые ожидают низкого уровня обслуживания, необходимого для получения результата. Рано или поздно запросы на результаты собираются. В результате программа создает много проблем, которые приводят к истощению пула потоков или занимают всю доступную память. Мы также можем наблюдать производительность за счет переключения процессора.

введите описание ссылки здесь