В конце прямо трудовое видео) Чтобы в 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
Как понять в каких ситуациях лучше выбрать ResponseEntity, а в каких Mono?
На мой взгляд правильнее использовать Mono, чтобы цепочка вызовов была в виде одного стрима
В конце прямо трудовое видео)
Чтобы в 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 ну, это однозначно медленнее, чем напрямую к БД обращаться, но не критично
А где название что за sc24ep07??
Поправь название ролика пожалуйста
А где можно получить лицензию на intellij idea из россии?
в google
От товарища с иностранной Visa)
28:09 Есть ли разница в использовании @ControllerAdvice и @RestControllerAdvice? Почему не RestControllerAdvice?
По сути @RestControllerAdvice - @ControllerAdvice + @ResponseBody, @ControllerAdvice использовал, т.к. привычнее
@@shurik_codes Ага вспомнил) Спасибо