В конце прямо трудовое видео) Чтобы в 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()); } });
Здравствуйте! А можно ли вообще вместо webclient при создании подобных сервисов использовать одну бд, напрмер один сервис загружает данные будучи нереактивным, а второй сервис с реактивным драйвером бд только считывает их?
По сути никто и ничто не мешает так делать (работать с одной БД из разных сервисах), но это нарушает концепцию микросервисной архитектуры, где каждый микросервис имеет свою базу данных. Это, кстати, имеет свои достоинства - если в структуре БД что-то меняется, то эти изменения зачастую спровоцируют изменения только только в соответствующем микросервисе.
Уроки просто огонь, спасибо за титанический труд!
очень интересно побольше бы такого
Спасибо за отличный урок!
Хорошая тема. Загружен на работе, не успеваю за тезкой. Наверстаю обязательно.
@shurik_codes Привет, насчет дефолтного значения в радиобатонах - нужно добавить checked в одном из них, например:
5
❤❤❤
Добрый день! Подскажите, пожалуйста, для чего в pom.xml в зависимостях lombok true
Чтобы он не был транзитивной зависимостью, подбробнее тут: github.com/projectlombok/lombok/issues/1629#issuecomment-376005025
В конце прямо трудовое видео)
Чтобы в 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());
}
});
Как ни странно, я нулевой))) Лайк поставил, а счетчик остался "0"
Здравствуйте! А можно ли вообще вместо webclient при создании подобных сервисов использовать одну бд, напрмер один сервис загружает данные будучи нереактивным, а второй сервис с реактивным драйвером бд только считывает их?
По сути никто и ничто не мешает так делать (работать с одной БД из разных сервисах), но это нарушает концепцию микросервисной архитектуры, где каждый микросервис имеет свою базу данных. Это, кстати, имеет свои достоинства - если в структуре БД что-то меняется, то эти изменения зачастую спровоцируют изменения только только в соответствующем микросервисе.
@@shurik_codes Спасибо за разъяснение!. А вообще обращения по вебклиенту не замедляет работу в сравнении с прямым обращением к единой бд?
@@svyatoiambrozii ну, это однозначно медленнее, чем напрямую к БД обращаться, но не критично
Как понять в каких ситуациях лучше выбрать ResponseEntity, а в каких Mono?
На мой взгляд правильнее использовать Mono, чтобы цепочка вызовов была в виде одного стрима
А где название что за sc24ep07??
Поправь название ролика пожалуйста
А где можно получить лицензию на intellij idea из россии?
в google
От товарища с иностранной Visa)
28:09 Есть ли разница в использовании @ControllerAdvice и @RestControllerAdvice? Почему не RestControllerAdvice?
По сути @RestControllerAdvice - @ControllerAdvice + @ResponseBody, @ControllerAdvice использовал, т.к. привычнее
@@shurik_codes Ага вспомнил) Спасибо