SC24EP07 Разработка реактивных REST-сервисов - Разработка проектов со Spring
HTML-код
- Опубликовано: 20 янв 2025
- Седьмой ролик цикла посвящён разработке реактивных REST-сервисов на основе Spring WebFlux и Project Reactor.
В цикле роликов "Разработка проектов со Spring" я рассказываю на простых примерах о процессе разработки веб-приложений и REST-сервисов на языке программирования Java с использованием экосистемы Spring. Данный цикл охватывает разработку классических и реактивных проектов, вопросы их сопровождения, такие как документация и мониторинг, адаптацию их к облачной инфраструктуре и процесс их развёртывания в Docker и Kubernetes.
Репозиторий проекта: github.com/ale...
Мои ресурсы:
Сайт: alexkosarev.name
Канал на RUclips: / @shurik_codes
Канал в Telegram: t.me/+TZCuO38v...
Группа для обсуждений в Telegram: t.me/+UFAkw187...
Паблик в VK: shurik....
Канал в Дзене: dzen.ru/shurik...
Канал на Rutube: rutube.ru/chan...
Страница в Boosty: boosty.to/akos...
Поддержать проект:
Доны в VK: donut/s...
Донаты в Boosty: boosty.to/akos...
Через Tinkoff: www.tinkoff.ru...
#java #spring #reactive #webflux #rest #howto
красава, спасибо!
Уроки просто огонь, спасибо за титанический труд!
очень интересно побольше бы такого
Спасибо за отличный урок!
Хорошая тема. Загружен на работе, не успеваю за тезкой. Наверстаю обязательно.
@shurik_codes Привет, насчет дефолтного значения в радиобатонах - нужно добавить checked в одном из них, например:
5
❤❤❤
Как ни странно, я нулевой))) Лайк поставил, а счетчик остался "0"
В конце прямо трудовое видео)
Чтобы в WebClientProductReviewsClient избавиться от кастования к List, как вариант можно выкинуть ProblemDetail и его getProperties(), который возвращает Object.
И написать примерно такое:
.onErrorMap(WebClientResponseException.BadRequest.class, ex -> {
try {
ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(ex.getResponseBodyAsString());
JsonNode errorsNode = root.path("errors");
List errors = mapper.convertValue(errorsNode, new TypeReference() { });
return new ClientBadRequestException(ex, errors);
} catch (Exception e) {
return new ClientBadRequestException(ex, Collections.emptyList());
}
});
Добрый день! Подскажите, пожалуйста, для чего в pom.xml в зависимостях lombok true
Чтобы он не был транзитивной зависимостью, подбробнее тут: github.com/projectlombok/lombok/issues/1629#issuecomment-376005025
Как понять в каких ситуациях лучше выбрать ResponseEntity, а в каких Mono?
На мой взгляд правильнее использовать Mono, чтобы цепочка вызовов была в виде одного стрима
Здравствуйте! А можно ли вообще вместо webclient при создании подобных сервисов использовать одну бд, напрмер один сервис загружает данные будучи нереактивным, а второй сервис с реактивным драйвером бд только считывает их?
По сути никто и ничто не мешает так делать (работать с одной БД из разных сервисах), но это нарушает концепцию микросервисной архитектуры, где каждый микросервис имеет свою базу данных. Это, кстати, имеет свои достоинства - если в структуре БД что-то меняется, то эти изменения зачастую спровоцируют изменения только только в соответствующем микросервисе.
@@shurik_codes Спасибо за разъяснение!. А вообще обращения по вебклиенту не замедляет работу в сравнении с прямым обращением к единой бд?
@@svyatoiambrozii ну, это однозначно медленнее, чем напрямую к БД обращаться, но не критично
А где название что за sc24ep07??
Поправь название ролика пожалуйста
А где можно получить лицензию на intellij idea из россии?
в google
От товарища с иностранной Visa)
28:09 Есть ли разница в использовании @ControllerAdvice и @RestControllerAdvice? Почему не RestControllerAdvice?
По сути @RestControllerAdvice - @ControllerAdvice + @ResponseBody, @ControllerAdvice использовал, т.к. привычнее
@@shurik_codes Ага вспомнил) Спасибо