@believe_me

Как правильнее обработать кастомное исключение в Spring MVC?

Нужно избежать добавление дублирующей записи в контроллере.
Controller:
613f52f325702338563241.png
CategoryDao:
613f533cd3f64143225782.png

Насколько ок завязываться на логике выброшеного исключения? как в методе #isExistByName?
Если не ок так делать, то каким подходом воспользоваться лучше? переписать метод, который будет проверять есть ли запись в базе без обращение к стороннему методу #getByName?

Перечитал и пересмотрел много примеров, но не знаю к какому архитектурному решению прийти.
  • Вопрос задан
  • 62 просмотра
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Добрый вечер.
1) Прежде всего - вместо скриншотов добавляйте сниппеты кода. Если например, придется вносить правки в ваш код, то что прикажете делать? Не перепечатывать же его со скрина.
2) Проверку на дубликаты и др. логику лучше перекинуть на сервисный слой.
Например, некий CategoryService, где обрабатывается бизнес логика, а затем в сервисном слое вызываются методы CategoryDao
3)
Насколько ок завязываться на логике выброшеного исключения?

Выбрасывайте свое кастомное исключение в сервисном слое. Например, DuplicateRecordExistsException, RecordExistsException или что-то типа такого.
Далее ловите данное исключение на уровне контроллера или controllerAdvice. А затем уже на основе выбрасываемого исключения отдавайте на клиент сообщение с http статусом. Например,
наличие дубликата это ошибка на клиенте. Соответсвенно, код ошибки 4xx (например, 400). Сообщение ошибки - Запись существует.
Прочитайте вот это - https://spring.io/blog/2013/11/01/exception-handli...
Обратите внимание на
@ExceptionHandler
а также вот, эту главу - Global Exception Handling Using @ControllerAdvice Classes
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы