а если не найдено то, что должно там быть. Значит, неправильно посылаются запросы с фронта, значит, - нештатная ситуация. Я правильно мыслю?
на мой взгляд, неправильный запрос с фронта это типичная ситуация. Ты должен отдать правильный http код, и опционально тело.
Для сравнения - консольная программа, ты в неё даёшь неправильные входные параметры, она тебе нормально отвечает, что ты дурак, а не падает с исключением.
@ControllerAdvice
public class DefaultExceptionHandler {
@ExceptionHandler(PointNotFoundException.class)
public ResponseEntity<info.md7.routing_gh.exception.ErrorMessage> handlePointNotFoundException(PointNotFoundException ex) {
String errorMessage = ex.getMessage();
return new ResponseEntity<>(new info.md7.routing_gh.exception.ErrorMessage(200, errorMessage), HttpStatus.NOT_FOUND);
}
@ExceptionHandler(PointOutOfBoundsException.class)
public ResponseEntity<info.md7.routing_gh.exception.ErrorMessage> handlePointOutOfBoundsException(PointOutOfBoundsException ex) {
String errorMessage = ex.getMessage();
return new ResponseEntity<>(new info.md7.routing_gh.exception.ErrorMessage(201, errorMessage), HttpStatus.BAD_REQUEST);
}
@ExceptionHandler(PointDistanceExceededException.class)
public ResponseEntity<info.md7.routing_gh.exception.ErrorMessage> handlePointDistanceExceededException(PointDistanceExceededException ex) {
String errorMessage = ex.getMessage();
return new ResponseEntity<>(new info.md7.routing_gh.exception.ErrorMessage(202, errorMessage), HttpStatus.BAD_REQUEST);
}
}
Как Вы считаете, нужно ли создавать много кастомных эксепшенов
а остальные пускать через общий класс ApiException?
Вероятно, как клиент вы бы не хотели получить размытый ответ об ошибке аля "Error, please try agian", либо что еще хуже получить стек-трейс.
spring boot же не имеет встроенный томкат.
For servlet stack applications, the spring-boot-starter-web includes Tomcat by including spring-boot-starter-tomcat, but you can use spring-boot-starter-jetty or spring-boot-starter-undertow instead.
DTO это как правило интерфейс(класс?) наследующий/реализующий CrudRepository и его производные
ну там уже компонент сервис который сводит это до кучи. Нет?
String userID = FirebaseAuth.getInstance().getCurrentUser().getUid();
private void DisconnectDriver() {
String userID = FirebaseAuth.getInstance().getCurrentUser().getUid();
чтобы понять суть стримов для начала нужно разобраться в парадигмах.
Java Stream API - это функциональное программирование (декларативный стиль). А когда вы используете for, while и т.д. это в данном случае ООП (императивный стиль).
Я бы не сказал, что они взаимозаменяемые всегда, но в целом конечно же писать лаконичный код удобно. Как говорится: "Краткость - сестра таланта".
Когда вы пишете код в императивном стиле, вы "говорите" КАК нужно сделать, а когда пишете в декларативном стиле стиле, вы "говорите" ЧТО нужно сделать.
Например,
императивный стиль: "пройдись по массиву (итерация), получи каждый элемент массива, проверь является ли число четным и если да, то добавь его в новую коллекцию и верни результат ."
декларативный стиль: "отфильтруй числа, найди четные и верни коллекцию".
Книга, которую упомянул коллега хорошая. Можете начать с нее.
Также можете прочитать - https://vertex-academy.com/tutorials/ru/java-8-uch...